2011-12-29 63 views
0

我想填充列表活动类和我的自定义对象Person,我写了下面的代码ListActivity与自定义对象的Android

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    liPerson = new ArrayList<Person>(); 
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd"); 
    liPerson.add(person); 
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd"); 
    liPerson.add(person); 
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd"); 
    liPerson.add(person); 
    person = new Person("Pritom Kumar Mondal", "Software Engineer", "bd"); 
    liPerson.add(person); 
    Person[] persons = (Person[]) liPerson.toArray(); 
    setListAdapter(new MyAdapter(this, 
      android.R.layout.simple_list_item_1, 
      persons)); 
} 

private class MyAdapter extends ArrayAdapter<Person> { 
    private Person[] persons; 
    public MyAdapter(Context context, int resource, Person[] persons) { 
     super(context, resource, persons); 
     // TODO Auto-generated constructor stub 
     this.persons = persons; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.list_item, parent, false); 
     //String[] items = getResources().getStringArray(R.array.countries); 
     Person p = persons[position]; 
     ImageView iv = (ImageView) row.findViewById(R.id.imageView1); 
     TextView tv = (TextView) row.findViewById(R.id.textView1); 

     tv.setText(p.getName()); 

     String mDrawableName = "bd"; 
     int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 
     iv.setImageResource(resID); 


     return row; 
    } 
} 

它不工作。我可以从我的xml文件中填充一个列表活动,但我希望将其作为我的自定义对象。

+0

你是说“它不工作”?空的清单?崩溃?还要别的吗? – ernazm 2011-12-29 16:36:36

回答

1

只需将整个ArrayList传递给ArrayAdapter即可。然后你可以通过getItem(position)获得你的对象。“你的方法在这里”

ArrayList<Person> personList = new ArrayList<Person>(); 

    ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this, 
      R.layout.person_item, personList) { 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View row; 

      if (null == convertView) { 
       row = mInflater.inflate(R.layout.person_item, null); 
      } else { 
       row = convertView; 
      } 

      TextView tView = (TextView) row.findViewById(R.id.tvName); 
      tView.setText(getItem(position).getName()); // This is where you get the name from your object 

      return row; 
     } 
    };