0

我创建了一个ArrayAdapter填充ListView. 适配器中的数据是我从服务器获取的 POJO 列表。每个 POJO 都有一个服务器给定的唯一 id,我对那个 id 没有影响。id 仅供内部使用,这意味着它不会在ListView.

我的意图:如果用户单击列表中的某个项目,我想将 id 传递回服务器。第一步是创建一个onItemClickListener

ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void OnItemClick(AdapterView<?> parent, View view, int position, long id) {

    // call the server in a new thread

    // BUT: how do I get the POJO id from this position?

    }
}); 

我的问题是:我不知道如何获取 POJO 的 id。由于它不向用户显示,因此不在我在侦听器中传递的 TextView 中。其他参数 - 位置和 id -似乎也不是我需要的。描述:

  • position:视图在适配器中的位置。
  • id:被点击的项目的行id。

我希望你明白我的意思,否则告诉我。谢谢!

4

3 回答 3

4

parent.getItemIdAtPosition(int position)将为您提供该索引处的 pojo 对象。

于 2012-06-02T18:51:14.567 回答
3

这将取决于您的适配器如何工作。该id参数将与适配器正在适应的项目之一对应。基于此id,以及适配器的工作方式,您可以检索由单击的视图表示的原始逻辑项。

于 2012-06-02T18:47:07.703 回答
2
@Override
public void OnItemClick(AdapterView<?> parent, View view, int position, long id) {

    Object item = parent.getAdapter().getItem(position);
}
于 2012-06-02T23:35:16.140 回答