Android 带有自定义对象的ListActivity

Android 带有自定义对象的ListActivity,android,listactivity,Android,Listactivity,我想用我的自定义对象Person填充一个列表活动类,我编写了以下代码 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); liPerson = new ArrayList<Person>(); person = new Person("Pritom Kumar Monda

我想用我的自定义对象
Person
填充一个列表活动类,我编写了以下代码

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;
    }
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
liPerson=newarraylist();
人员=新人(“Pritom Kumar Mondal”、“软件工程师”、“bd”);
添加(人);
人员=新人(“Pritom Kumar Mondal”、“软件工程师”、“bd”);
添加(人);
人员=新人(“Pritom Kumar Mondal”、“软件工程师”、“bd”);
添加(人);
人员=新人(“Pritom Kumar Mondal”、“软件工程师”、“bd”);
添加(人);
Person[]persons=(Person[])liPerson.toArray();
setListAdapter(新的MyAdapter(此,
android.R.layout.simple\u list\u item\u 1,
(人);;
}
私有类MyAdapter扩展了ArrayAdapter{
私人[]人;
公共MyAdapter(上下文上下文,int资源,Person[]persons){
超级(背景、资源、人员);
//TODO自动生成的构造函数存根
这个人=人;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
视图行=充气机。充气(R.layout.list\u项,父项,false);
//String[]items=getResources().getStringArray(R.array.countries);
人员p=人员[职位];
ImageView iv=(ImageView)row.findViewById(R.id.imageView1);
TextView tv=(TextView)row.findViewById(R.id.textView1);
tv.setText(p.getName());
字符串mDrawableName=“bd”;
int resID=getResources().getIdentifier(mDrawableName,“drawable”,getPackageName());
iv.setImageResource(剩余);
返回行;
}
}

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

只需将整个ArrayList传递给ArrayAdapter即可。然后,您可以使用getItem(position)获取对象

ArrayList personList=new ArrayList();
ArrayAdapter=新的ArrayAdapter(此,
R.layout.person(项目、人员列表){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
查看行;
if(null==convertView){
row=mInflater.充气(R.layout.person\u项目,空);
}否则{
行=转换视图;
}
TextView tView=(TextView)row.findViewById(R.id.tvName);
tView.setText(getItem(position).getName());//这是从对象获取名称的地方
返回行;
}
};
你说“它不工作”是什么意思?空名单?崩溃还有别的吗?
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;
        }
    };