2015-12-10 37 views
0

所以我有一個類:如何顯示在列表視圖對象的ID如果適配器類型的對象

class student{ 
public int id; 
public String name; 
} 

後來才知​​道有學生類型的adapterArray和適配器傳遞到列表視圖。我想知道如何讓listview只顯示學生的姓名。 代碼:

ListView list=(ListView)findViewById(R.id.list_day_wise_expense); 
ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this,R.layout.increase_size_text, kids); 
list.setAdapter(adapter); 

,孩子們是學生的對象和列表的陣列是我的列表視圖。 我想要列表顯示他們的名字。

+2

重寫'toString' – pskink

+1

使用adapter.getItem(position)應該返回你的Student類。然後你可以在其上執行student.name或getName()。 –

+0

選中此[教程](http://androhub.com/android-listview/)。 –

回答

0

覆蓋toString方法Student類。

class student{ 
    public int id; 
    public String name; 

    @Override 
    public String toString() { 
     return name; 
    } 
} 
0

您只需要覆蓋getView()

ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, R.layout.increase_size_text, kids){ 
     @Override 
     public View getView (int position, View convertView, ViewGroup parent) { 
      View view = convertView == null ? 
        super.getView(position, convertView, parent) : convertView; 
      TextView tv = (TextView) view.findViewById(R.id./* PUT ID HERE */); 
      tv.setText(getItem(position).name); 
      return view; 
     } 
    }; 

,你不需要創建自己的佈局。這也可以工作:

ArrayAdapter<Student> adapter = new ArrayAdapter<Student>(this, android.R.layout.simple_list_item_1, kids){ 
     @Override 
     public View getView (int position, View convertView, ViewGroup parent) { 
      View view = convertView == null ? 
        super.getView(position, convertView, parent) : convertView; 
      TextView tv = (TextView) view.findViewById(android.R.id.text1); 
      tv.setText(getItem(position).name); 
      return view; 
     } 
    }; 
+0

不需要:只需重寫'Student#toString' – pskink

+0

@pskink取決於你想要toString()做什麼。有時toString()最好將所有變量打印出來。很多時候你也無法進入課堂。 – WalterM

相關問題