В итоге я просто создал простой метод, который просматривает все элементы (которые должны быть в порядке):
/**
* 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());