【发布时间】:2014-02-24 06:57:15
【问题描述】:
我有一个列表视图,我使用了自定义适配器。每个列表项都有三个文本视图。
我的要求是,我必须从第一个列表项中获取文本。
我尝试了以下代码,但无法正常工作
ListView listView = (ListView) findViewById(R.id.contactList);
listView.setAdapter(new CustomAdapter(ContactListActivity.this, contactList));
Contact contact = (Contact)listView.getItemAtPosition(0);
String firstName = contact.getDisplayName();
contactList是自定义对象Contact的arraylist,包含name、phone、email 3个字段。
我的适配器代码
类 CustomAdapter 扩展 BaseAdapter { 私人名单联系人名单; 私有 LayoutInflater 充气器;
public CustomAdapter(Context context, List<Contact> contactList2) {
inflater = LayoutInflater.from(context);
this.contactList = contactList2;
}
@Override
public int getCount() {
return contactList.size();
}
@Override
public Object getItem(int position) {
return contactList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.contactlistitem, null);
holder = new viewHolder();
holder.name = (TextView) convertView.findViewById(R.id.txtDisplayName);
holder.number = (TextView) convertView.findViewById(R.id.txtPhone);
holder.email = (TextView) convertView.findViewById(R.id.txtMailID);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}
holder.name.setText(contactList.get(position).getDisplayName());
holder.number.setText(contactList.get(position).getPhone());
holder.email.setText(contactList.get(position).getEmail());
return convertView;
}
public class viewHolder {
TextView name;
TextView number;
TextView email;
}
}
我的错误是什么,有什么建议吗?
【问题讨论】:
-
它应该可以工作。您遇到任何错误吗?
-
您的 CustomAdapter 必须包含在列表项中查找 3 个文本视图的代码。即
findViewById必须在 CustomAdapter 中使用。您必须覆盖getView或其他 (new|bind) 视图调用之一。 -
它崩溃了... java.lang.ClassCastException: java.lang.Integer
-
向我们展示适配器代码。
-
is contactList 是 Array 或 ArrayList 的类型