获取ListView中项目的位置?

CL2*_*L22 9 java android

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

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

到目前为止我完成它的方式是当用户点击某个项目时,所选项目的ID将保存到首选项中.我需要学习的是如何重新填充活动的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"));
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

rek*_*eru 15

你应该试试

//SimpleCursorAdapter adapter;
final int position = adapter.getCursor().getPosition();
Run Code Online (Sandbox Code Playgroud)

API文档:

public abstract int getPosition () 
Run Code Online (Sandbox Code Playgroud)

自:API级别1

返回行集中光标的当前位置.该值从零开始.首次返回行集时,光标将位于第一行之前的位置-1.在返回最后一行之后,另一个调用next()将使光标离开最后一个条目,位于 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;
}
Run Code Online (Sandbox Code Playgroud)

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

//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;
}
Run Code Online (Sandbox Code Playgroud)