Android:如何将对象列表传递到ListView

标签 android android-listview

我有课

public class User
{
   UUID id;
   String name;
}

我想将其传递到 ListView 中:仅列出并显示“名称”。 但是,当选择 ListView 中的项目时,我想知道所选项目的“id”。

最佳答案

首先,我将创建一个包含这两条信息的类。

public class MyItem {

public final String name;
public final String id;

public MyItem(String name, String id) {
    this.name = name;
    this.id = id;
 }

}

然后制作一个可以支持此类的自定义适配器。

public class CustomAdapter extends ArrayAdapter<MyItem> {

private Context context;
private ArrayList<MyItem> items;
private LayoutInflater vi;

public EntryAdapter(Context context,ArrayList<MyItem> items) {
    super(context,0, items);
    this.context = context;
    this.items = items;
    vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    final Item i = items.get(position);
    if (i != null) {
            v = vi.inflate(R.layout.list_item, null); //custom xml for desired view
            //do what ever you need to

    }
    return v;
     }

     }

填充 MyItem 的数组,然后使用该数组创建自定义适配器。

items = new ArrayList<MyItem>(); // then populate it
myAdapter = new CustomAdapter(this, items);

现在设置 ListView 并使用 OnItemClickListener

myList.setAdapter(myAdapter);

    myList.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parentView, View view, int position,
                long id) 
        {
                ((MyItem)myAdapter.getItem(position)).id); //this line gets you the id of the clicked item

        }
    });

关于Android:如何将对象列表传递到ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285935/

相关文章:

javascript - 为什么我的 JavaScript 没有加载

java - android 中关于 xml 文件的错误。找不到与给定名称 @text 匹配的资源

java - Android 6 棉花糖 ListView 。使用运行时权限启动 Activity

android - ListView onItemClickListener 不做任何事情

java - 如何使用 SQL 数据库在 Fragment 上创建 Adapter ListView?

android - 在没有运行应用程序的情况下在 Android 上启动警报

android - 仅在数据更改时调用 LiveData.observe() 回调并忽略 Controller (Activity/Fragment)的生命周期更改

java - 我的 android 项目测试设置中缺少任何内容吗?

Android:更改 ListView 中特定项目的图像

android - 删除操作后更新 ListView