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

因此,我希望用户能够单击列表中的一项。每个项目都有一个标识符,然后将其放入意图中并发送给新的活动(然后,该活动将基于此触发新的Web服务请求,并下载其余数据)。但是我不知道如何获得所选的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,则必须使用数组初始化该适配器,对吗?因此,最好的方法是使用从postition获得的onListItemClick并从原始数组中获取对象。

例如:

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

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

10-08 15:16