2011-09-19 83 views
0

每次创建Activity时,我都有一个充满动态数据集的ListView。为了简单起见,可以说每个ListView项目都是一个员工的名字。在引擎盖下,每个员工都有一个employee_id号码。该号码在界面的任何地方都不可见。Android - 用于动态ListView数据的OnClick处理程序?

当我点击ListView中的员工姓名时,我想启动另一项活动,将相应员工的employee_id传递给该活动。

我明白如何实现ListView的onClick处理程序。我的问题是,我会在哪里为每位员工储存和检索employee_id?我是否会将其存储在哈希/地图中,以及员工出现在列表中的位置?当我点击时,我只是确定我点击的列表中的位置,然后使用该位置从哈希中获得employee_id

回答

4

将ArrayAdapter与列表Employees一起使用 - 假设您有Employee对象。

public class MyActivity extends ListActivity { 
    // list of employees 
    private List<Employee> employees = new ArrayList<Employee>(); 

然后使用OnItemClick中的position参数来获取员工对象。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    int employee_id = ((Employee) getListAdapter().getItem(position)).getId(); 
    // ... 
} 

您还可以扩展一个ArrayAdapter定制员工的对象列表: How to use ArrayAdapter<myClass>

0

您使用基于某些数据集(例如Employee对象列表)的Adapter。当您在ListView上设置onItemClickListener时,onItemClick方法将获取作为基础数据中位置的int参数。使用它从您的列表中拔出Employee对象,并且有员工ID。

0

我会建议你做上面说的。或者,我并不认为这是很好的解决方案,我也认为没有,但是你可以添加一个没有内容的标签(maxHeight和maxWdith都是0或者不可见?从未尝试过)并设置文本。我不知道它是如何资源明智的。但是你不必再保存这个列表,如果你有一个大列表,这将节省一些内存。