【问题标题】:How to get the details of first listitem in Listview?如何在 Listview 中获取第一个 listitem 的详细信息?
【发布时间】: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 的类型

标签: android listview


【解决方案1】:

试试这个

Contact contact = (Contact) listView.getAdapter().getItem(position);
String firstName = contact.getDisplayName();

【讨论】:

  • 它崩溃了... java.lang.ClassCastException: java.lang.Integer
  • 我发现您的初始代码没有错误。你得到什么例外。如果您可以发布您的适配器代码,将很容易帮助您
【解决方案2】:

为什么您需要从ListViewAdapter 获取第一项。您已经拥有ArrayList 数据只需像这样获取..

Contact contact = contactList.get(0);
String firstName = contact.getDisplayName();

基于 OP 要求 改成这样..

    CustomAdapter adapter = new CustomAdapter(ContactListActivity.this, contactList);
    listView.setAdapter(adapter);
    Contact contact = (Contact)adapter.getItem(0);
    String firstName = contact.getDisplayName();

【讨论】:

  • 是的,它很好,但问题是我不会每次都使用相同的列表...我还会使用一些动态列表...所以我想从 listview 而不是列表中检索
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多