我有一个 ListView 显示来自 SimpleCursorAdapter 的数据。我有 id 值,我想要列表中的位置,与 getItemId(position) 相反。有这样的功能吗?
我知道如何实现它(不要打扰显示代码),但我找不到它,这似乎是一个显而易见的方法。
我有一个 ListView 显示来自 SimpleCursorAdapter 的数据。我有 id 值,我想要列表中的位置,与 getItemId(position) 相反。有这样的功能吗?
我知道如何实现它(不要打扰显示代码),但我找不到它,这似乎是一个显而易见的方法。
从评论中提出
内置适配器没有这样的方法。如果您的 ListView 是按行 ID 排序的,那么您可以使用二进制搜索(快!),否则您可能会遇到详尽的搜索(慢...)。
简单的解决方案是将 id 设置为绑定视图中的子项
@Override
public void bindView(View view, final Context context, Cursor cursor {
.....
convertView.setId(id);
}
稍后从活动中您可以通过 id 找到此视图并获取位置
View yourChildViewWithSpecifiedId = yourListView.findViewById(id);
int position = yourListView.getPositionForView(yourChildViewWithSpecifiedId);