0

Так я получилКак добавить элементы в ListView из класса?

List <Employers> employers 

Работодатели класс:

public class Employers{ 
    private String fullName; 
    private int age; 

    public String getFullName() { 
     return fullName; 
    } 

    public void setFullName(String fullName) { 
      this.fullName = fullName; 
    } 

    public int getAge() { 
      return age; 
    } 
    public void setAge(int age) { 
      this.age = age; 
    } 
} 

Мой ListView работает так:

ArrayAdapter<String> adapter = new ArrayAdapter <String>(MainAcivity.this,android.R.layout.simple_list_item_1,receiveArray(employers)); 

где receiveCategoryNames является:

private String[] receiveArray(List<Employers> employers){ 
    String [] employerArray= new String[employers.size()]; 
    for (int i=0; i<employerArray.length; i++){ 
     employerArray[i]=employers.get(i).getFullName(); 
    } 
    return employerArray; 
} 

Программа работает. Но могу ли я каким-то образом показать ListView без преобразования List of Employers в массив String?

+1

использовать пользовательский адаптер. вы хотите отобразить только имя – Raghunandan

ответ

0

Я не уверен, что вы хотите.

Если вы хотите отобразить только имя

Тогда

public class Employers{ 
    private String fullName; 
    private int age; 

    public String getFullName() { 
     return fullName; 
    } 

    public void setFullName(String fullName) { 
      this.fullName = fullName; 
    } 

    public int getAge() { 
      return age; 
    } 
    public void setAge(int age) { 
      this.age = age; 
    } 

    @Override 
    public String toString() {  // note the toString method 
     // TODO Auto-generated method stub 
     return this.fullName; 
    } 

} 

Тогда

ArrayAdapter<Employers> adapter = new ArrayAdapter<Employers>(this,android.R.layout.simple_list_item_1,employers); 
    lv.setAdapter(adapter); 

Если вы хотите отобразить имя и возраст

Используйте CustomAdapter

CustomAdapter adapter= new CustomAdapter(ActivityName.this,employers); 
lv.setAdapter(adapter); 

Тогда

class CustomAdapter extends ArrayAdapter<Employers> 
{ 


    List<Employers> data; 
    LayoutInflater mInflater; 
    public CustomAdapter(Context context,List<Employers> data) { 
     super(context, R.layout.row,data); 
     mInflater = LayoutInflater.from(context); 
     this.data=data; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     ViewHolder holder; 
     if(convertView==null) 
     { 
      holder = new ViewHolder(); 
      convertView= mInflater.inflate(R.layout.row, parent,false); 
      holder.tv1= (TextView) convertView.findViewById(R.id.textView1); 
      holder.tv2= (TextView) convertView.findViewById(R.id.textView2); 
      convertView.setTag(holder); 
     }else 
     { 
      holder= (ViewHolder) convertView.getTag(); 
     } 
     Employers e = data.get(position); 
     holder.tv1.setText(e.getFullName()); 
     holder.tv2.setText(String.valueOf(e.getAge())); 
     return convertView; 
    } 
    static class ViewHolder 
    { 
     TextView tv1,tv2; 

    } 

} 

row.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="29dp" 
     android:text="TextView" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="34dp" 
     android:text="TextView" /> 

</RelativeLayout> 
+0

Прекрасно работает. Благодарю. – user3271322

0

Здесь вы узнаете о том, как сделать пользовательский адаптер и использовать его. Click here.

Смежные вопросы