我有一个ListView,每次创建Activity时都会填充一组动态数据。为简单起见,我们假设每个ListView项都是员工的名字。在幕后,每位员工都有employee_id
个号码。此编号在界面的任何位置都不可见。
当我在ListView中点击员工的姓名时,我想启动另一项活动,将相应员工的employee_id
传递给该活动。
我理解如何为ListView实现onClick处理程序。我的问题是,我会在哪里为每位员工存储和检索employee_id
?我是否只需将其与员工出现的列表中的位置一起存储在哈希/地图中?当我点击时,我只是确定我点击的列表中的位置,然后使用该位置从哈希中获取employee_id
?
答案 0 :(得分:4)
将ArrayAdapter与列表Employees一起使用 - 假设您有Employee-object。
public class MyActivity extends ListActivity {
// list of employees
private List<Employee> employees = new ArrayList<Employee>();
然后使用OnItemClick中的position参数获取employee-object。
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int employee_id = ((Employee) getListAdapter().getItem(position)).getId();
// ...
}
您还可以扩展ArrayAdapter以定制employee-objects的列表: How to use ArrayAdapter<myClass>
答案 1 :(得分:0)
您使用基于某些数据集的适配器(例如,Employee对象列表)。在ListView上设置onItemClickListener时,onItemClick方法获取一个int参数,该参数是底层数据中的位置。使用它来从列表中提取Employee对象,并且有员工ID。
答案 2 :(得分:0)
我建议做你上面说的话。或者,我不认为这是一个很好的解决方案,我也认为没有,但你可以添加一个没有内容的标签(maxHeight和maxWdith都是0,或者是不可见的?从未尝试过)并设置文本。我不知道它是如何资源化的。但是你不必再保存列表,如果你有一个大的列表,这可以节省一些内存。