【问题标题】:how to set row id for onItemClick from如何为 onItemClick 设置行 ID
【发布时间】:2012-09-18 13:12:39
【问题描述】:

我有 onItemClick 监听器,我想使用 id 值。 但它与位置具有相同的价值。

public void onItemClick(AdapterView<?> a, View view, int position, long id) {
    DBh.something(id);
}

我正在使用与那个类似的自定义 ArrayAdapter: onItemClickListener with custom adapter and listview

我尝试使用 row.setId() 但它的 int 不长。

【问题讨论】:

  • 你能出示你的完整代码吗?
  • 数组适配器中没有id,只有位置

标签: android android-arrayadapter onitemclicklistener


【解决方案1】:

我不是在问为什么你要这样做(你可能有你的理由),所以我只是解释一下如何这样做。由于您已经在实现自定义适配器,因此您需要做的就是覆盖 getItemId 方法:

@Override
public long getItemId(int position) {
    //return ID based on the position
    return ...;
}

然后这个值将被传递给其他接收项目 ID 的方法。请注意,如果您知道如何从职位中获取 ID,那么您可以直接在 onItemClickListener 中进行操作,因为职位已传递给它。

【讨论】:

    【解决方案2】:

    您想要实现的具体目标是什么?在您的适配器中,您可以覆盖“getItemId(int position)”,并使其返回您要为项目提供的任何 ID。但是为什么要用id值,为什么不直接用position呢?

    【讨论】:

    • 我使用时间戳作为全局 id,无论如何我都需要找到被点击元素的时间戳值。
    • 那么为什么不将时间戳作为字段添加到元素中呢?
    • 我建议重写getItemId,并且我建议使用“postion”而不是“itemid”。这怎么不是答案?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多