我有GridView
,其中显示了缩略图列表。点击其中一个之后,我想导航到另一个活动,详细查看相应的“事物”。
我应该如何存储一些额外的数据/标识符,以便点击后我可以将其传递给详细的活动?默认情况下,我只获得位置和ID。我想以某种方式存储我的自定义标识符,我用它来查询外部服务以获取详细信息。
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Intent intent = new Intent(this, MovieDetails.class);
intent.putExtra(MY_ID, <some_extra_ID>);
startActivity(intent);
}
});
修改
例如,我有一个动态的菜单列表,只有该菜的照片(使用GridView)。当用户点击其中一个时,我想显示一个包含食谱和评论的详细视图。
为此我需要传递该菜的名称以在详细视图中加载信息。
答案 0 :(得分:0)
实际上它与点击监听器在通过view
,position
和id
时可以获得的一样好。但是,您可以通过在适配器中定义唯一商品 ID 来改善您获得的数据。
如果您使用ArrayAdapter
或SimpleAdapter
ID 通常与位置相同,但对于CursorAdapter
或SimpleCursorAdapter
ID 会返回表格的行ID 。
现在您可以扩展 适配器并在getItemId
方法中返回所需的 ID :
public class MyAdapter extends ArrayAdapter<MyItem>{
...
@Override
public long getItemId(int position) {
return myItems.get(position).myUniqueId;
}
}