我最终只是创建了一个简单的方法来搜索所有项目(假定它们是有序的):
/**
* 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());