1)创建一个 CursorAdapter 或 SimpleCursorAdapter 来呈现一个列表。
2)现在向下滚动列表一点,这样您就不会处于位置 0。
3) 现在执行您创建的 CursorAdapter 过滤器。
结果:
过滤器会正确更新数据,并且列表视图会使用新数据进行更新。
最大的问题是列表位置/选择保持在您之前的位置(如果新结果中有足够的行)。
我想在我的过滤器中执行 setSelection(0) 以始终将位置设置为 0,但不知道该怎么做。有什么明显的建议吗?
dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
listView.setSelection(0);
return newCursor;
});
上述方法不起作用,因为 setSelection() 是在数据更新、光标交换之前进行的。