我有一个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();