gpt4 book ai didi

android - Android ListView 适配器中项目 ID 的用途是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:33 26 4
gpt4 key购买 nike

(不特定于 ListView,而是特定于 Adapter)。

我在继承 BaseAdapter 时继续实现它:

    @Override
public long getItemId(int position) {
return position;
}

因为必须实现。我看不到它有任何用处,我只需要 getItem(position),不需要 getItemId(position)。

我想知道它是否有任何意义(对 Android SDK 或其他东西)?

最佳答案

想象一下这个结构:

你的数据库表 Notes 有这样 3 条记录:

+----+--------------------------+
| ID | Note Text |
+----+--------------------------+
| 43 | Note text blah blah |
| 67 | Note text blah blah blah |
| 85 | Last note |
+----+--------------------------+

然后您实现一个适配器来提供这些数据。

现在让我们看看这种情况下的position和item id是什么

position - 是加载数据集中记录位置的序号。例如,如果您使用 ORDER BY ID ASC 加载该表,则

  • ID 为 43 的记录的位置为 0
  • ID 为 67 的记录的位置为 1
  • ID 为 85 的记录将位于 2

itemId - 是记录的“主键”,您的实现可以返回此类值

  • ID 为 43 的记录应该有 itemId 43,
  • ID 为 67 的记录应该有 itemId 67,
  • ID 为 85 的记录应该有 itemId 85

Android 标准适配器中的位置和 itemId

数组适配器/简单适配器

ArrayAdapterSimpleAdapter中position和itemId是一样的:

public long getItemId(int position) {
return position;
}

SimpleCursorAdapter(以及所有继承自 CursorAdapter 的类型)

在 SimpleCursorAdapter 和 CursorAdapter 的所有后代中,itemId 是来自 _id 列的值:

public long getItemId(int position) {
if (mDataValid && mCursor != null) {
if (mCursor.moveToPosition(position)) {
return mCursor.getLong(mRowIDColumn);
} else {
return 0;
}
} else {
return 0;
}
}

关于android - Android ListView 适配器中项目 ID 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5100071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com