android - 使用自定义 ArrayAdapter<> 在 onListItemClick() 上获取特定项目属性

标签 android

我有一个 ListActivity显示我从 Internet 上的 Web 服务获取的搜索结果列表。我将收到的 XML 解析为 ArrayList<MyObjects>然后我绑定(bind)到 ListView使用我自己的适配器(如 MyObjectAdapter 扩展 ArrayAdapter<MyObject> )。

那么我希望用户能够单击列表中的一项。每个项目都有一个标识符,然后将其放入 Intent 并发送到新 Activity (然后基于此触发新的网络服务请求,下载其余数据)。但我不知道如何获得 MyObject 的这一属性被选中。

这是 onListItemClick()目前的方法:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
  super.onListItemClick(l, v, position, id);

  String myObjectId;

  // I want to get this out of the selected MyObject class here

  Intent i = new Intent(this, ViewObject.class);
  i.putExtra("identifier_key", myObjectId);
  startActivityForResult(i, ACTIVITY_VIEW);
}

最佳答案

如果您使用的是 ArrayAdapter,则必须使用数组初始化该适配器,对吗?因此,您可以做的更好的做法是使用从 onListItemClick 获得的 postition 并从原始数组中获取对象。

例如:

// somewhere you have this
ArrayList<MyObjects> theItemsYouUsedToInitializeTheArrayAdapter;

// and inside onListItemClick....
String myObjectId = theItemsYouUsedToInitializeTheArrayAdapter.get(position).getObjectId();

关于android - 使用自定义 ArrayAdapter<> 在 onListItemClick() 上获取特定项目属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066220/

相关文章:

android - Android Studio 实时从Mysql数据库获取数据

java - 向 Android 应用程序添加自定义字体

android - 用户重新安装适用于 Amazon SNS 的 Android 应用程序后,如何获取端点 ARN?

java - 无法在 Android Studio 中下载约束布局

java - JACK(Java Android Compiler Kit) 字母错误

android - IndexedDB 在应用程序安装后自动恢复

android - 如何在 Android gradle 构建过程中启用 fstack-protector

java - 我如何使用来自 firebase 的数据制作一个可点击的 recyclerview

java - 在 OnCreate 期间删除 View 之前如何获取 View 的高度?

java - 尝试在空对象引用上调用虚拟方法 'java.lang.String[] android.os.Bundle.getStringArray(java.lang.String)'