gpt4 book ai didi

java - 获取项目在 ListView 中的位置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:45 25 4
gpt4 key购买 nike

如何找到 ListView 中特定项目的位置? (由 SimpleCursorAdapter 填充)。

我问的原因:listview设置为singleChoice模式。当用户关闭并重新打开应用程序时,我希望记住用户的选择。

到目前为止,我采用的方法是当用户单击某个项目时,所选项目的 ID 会保存到首选项中。我需要学习的是如何在 Activity 的 onCreate 方法中重新选择项目,一旦它被重新填充。

我保存所选项目ID的代码:

    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);

Cursor c = (Cursor) l.getItemAtPosition(position);
selectedItem = c.getLong(c.getColumnIndex("_id"));
}

(我试过谷歌搜索,但似乎只能找到如何获取所选项的位置)

谢谢!

最佳答案

你应该试试

//SimpleCursorAdapter adapter;
final int position = adapter.getCursor().getPosition();

API 文档:

public abstract int getPosition () 

自:API 级别 1

Returns the current position of the cursor in the row set. The value is zero-based. When the row set is first returned the cursor will be at positon -1, which is before the first row. After the last row is returned another call to next() will leave the cursor past the last entry, at a position of count().

返回当前光标位置。

更新

根据适配器使用的 id 获取项目的位置:

private int getItemPositionByAdapterId(final long id)
{
for (int i = 0; i < adapter.getCount(); i++)
{
if (adapter.getItemId(i) == id)
return i;
}
return -1;
}

根据底层对象的属性(成员值)获取项目的位置

//here i use `id`, which i assume is a member of a `MyObject` class, 
//and this class is used to represent the data of the items inside your list:
private int getItemPositionByObjectId(final long id)
{
for (int i = 0; i < adapter.getCount(); i++)
{
if (((MyObject)adapter.getItem(i)).getId() == id)
return i;
}
return -1;
}

关于java - 获取项目在 ListView 中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684966/

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