如何在 listview onClick() 中从 POJO 获取项目?

Posted

技术标签:

【中文标题】如何在 listview onClick() 中从 POJO 获取项目?【英文标题】:How to get Item from POJO in listview onClick()? 【发布时间】:2019-08-28 19:42:47 【问题描述】:

我有一个 POJO,它描述了一些模型(项目?)和一些自定义适配器。

我正在为 ListView 设置我的适配器,然后,在 onItemClick() 中,我想获取已添加到项目中的变量之一的值。

我怎样才能做到这一点?

在我的代码中,我正在做类似的事情:

private List<SomeItem> items = new ArrayList();
items.add(new SomeItem(firstValueString, secondValueBitmap, thirdValueString));
SomeAdapter adapter = new SomeAdapter(this, R.layout.list_item, items);
listView.setAdapter(adapter);
listView.setOnItemClickListener(
...
@Override
public void onItemClick()
//How to reach for example firstValueString value of currently clicked item??

)

【问题讨论】:

【参考方案1】:

使用android.widget.AdapterView.OnItemClickListener:

 listView.setOnItemClickListener(new OnItemClickListener() 
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) 
        Log.d(LOG_TAG, "itemClick: position = " + position + ", id = "
            + id);
        SomeItem item = items.get(position); // specific item
      
    );

【讨论】:

正是我需要的。【参考方案2】:

基于 Android SDK 文档:

如果实现者需要访问与所选项目关联的数据,他们可以调用 getItemAtPosition(position)。

如果你完全实现你的适配器,那么你可以得到如下项目:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
        Item item = (Item)parent.getItemAtPosition(position);
    
); 

【讨论】:

以上是关于如何在 listview onClick() 中从 POJO 获取项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中从 ListView 中删除默认的 ScrollBar?

如何在flutter中从firebase数据填充listview

如何在 C# WPF 中从 ListView/XML 中完全删除一个项目?

单击 Listview 中的项目时,如何在新活动中从 Firebase 检索数据?

Android:如何在 ListView 的列表项中为 Button 设置 onClick 事件

如何在 Node.js 中从客户端(例如 html 按钮 onclick)调用服务器端函数?