3

我正在开始 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(在我的情况下)或获取ids 的替代方法?

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

4

1 回答 1

2

您可以使用标签并将标签分配给适配器中的每个视图集。然后,您可以从 OnClickListener 中的单击视图中读取您的标签并继续。由于标签可以是您喜欢的任何东西(对象),应该可以解决您的问题。请参阅setTag()和相关的。

于 2012-09-16T20:23:31.337 回答