gpt4 book ai didi

android - 从其 ListAdapter 的行 ID 获取 ListView 项目 ID

转载 作者:行者123 更新时间:2023-11-29 16:22:07 26 4
gpt4 key购买 nike

我正在尝试创建从数据库中查询的项目的单选(例如,单选按钮)列表。要处理当前选定的行,我需要使用 ListView 的 getCheckedItemPosition()setItemChecked() 方法。

我有一个 ListView,上面设置了一个 SimpleCursorAdapter。当我检索当前选择的项目时,我从数据库中获得了它的行 ID,我需要使用它来找到合适的项目并通过上述方法手动将其设置为选中。换句话说,我需要将行 ID 的状态映射到必然单调的行 ID(因为 setItemChecked() 方法接受位置 ID,而不是数据库行 ID,并且在我的数据库中我可以删除项目)。

那么有没有一种方法可以从表行 ID 中获取位置 ID?如果可能,我宁愿不求助于搜索。

谢谢。

最佳答案

我最终只是创建了一个简单的方法来搜索所有项目(假定它们是按顺序排列的):

/**
* Since Android apparently provides no way to do this, do a simple binary
* search for the item position based on its row id.
* @param adapter The adapter to use
* @param row The rowId to search for
* @param left
* @param right
* @return Position, or -1 if not found
*/
public int getPositionFromRowId(ListAdapter adapter, long row, int left, int right) {
if (left > right)
return -1;
int middle = (left + right) / 2;
if (adapter.getItemId(middle) == row)
return middle;
if (adapter.getItemId(middle) > row)
return getPositionFromRowId(adapter, row, left, middle - 1);
else
return getPositionFromRowId(adapter, row, middle + 1, right);
}

编辑:通过执行以下操作来使用此代码:

getPositionFromRowId(myListAdapter, row, 0, myListAdapter.getCount());

关于android - 从其 ListAdapter 的行 ID 获取 ListView 项目 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645854/

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