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;
}
};