Android - 动态ListView数据的OnClick处理程序?

时间:2011-09-19 22:15:27

标签: android listview event-handling

我有一个ListView,每次创建Activity时都会填充一组动态数据。为简单起见,我们假设每个ListView项都是员工的名字。在幕后,每位员工都有employee_id个号码。此编号在界面的任何位置都不可见。

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

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

3 个答案:

答案 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,或者是不可见的?从未尝试过)并设置文本。我不知道它是如何资源化的。但是你不必再保存列表,如果你有一个大的列表,这可以节省一些内存。