如何在Android中的View中嵌入额外信息?

时间:2012-09-16 20:09:35

标签: android

我正在开始android开发,在我的示例应用程序中,我有一个ListView,我填充如下:

ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getEntityLabels());
listView.setAdapter(adapter);

getEntityLabels()是一个返回字符串列表的函数。

在基础模型中,标签不是唯一的。相反,每个实体都有一个id字段,对每个实体都是唯一的。

class Entity{
  int id;
  String label;
}

当用户点击ListView中的某个项目时,我想做一些处理。所以,我添加了一个ItemClickListener,如下所示:

listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
{               
      //I would like to get the Id of the Entity, not just the label
}});

处理取决于实体的id。但是,由于列表中的视图只是一个文本而且只包含标签,因此我无法访问它。

有没有办法在视图中使用id(在我的情况下)中嵌入一些信息,或者使用其他方法来获取id

我知道我可以覆盖toString() Entity方法以返回标签并使用ArrayAdapter<Entity>代替ArrayAdapter<String>的方法。但是,我不是在寻找这个。我正在寻找一种更通用的方式,如果可能的话,我可以在任何视图中嵌入任何信息!

1 个答案:

答案 0 :(得分:2)

您可以使用标记并为适配器中的每个视图集分配标记。然后,您可以从OnClickListener中的单击视图中读取您的标记并继续。因为标签可以是你喜欢的任何东西(对象),可以解决你的问题。请参阅setTag()及相关内容。