gpt4 book ai didi

android - CursorAdapter 中的 setFilterQueryProvider() 和 runQueryOnBackgroundThread() 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:13 25 4
gpt4 key购买 nike

不太明白,provider是指ContentProvider吗?或者我认为它们是相同的。

有什么想法吗?

最佳答案

感谢@Luksprog 给我的回复。另外,我已经阅读了 CursorAdapter、CursorFilter 和 Filter 的源代码。原来CursorFilter扩展了Filter,而CursorAdapter实现了Filterable和CursorFilter.CursorFilterClient。

因此,如果您调用 getFilter.filter(s),您将获得新光标,并自动将 CursorAdapter 重置为新光标。

但是如果你调用runQueryOnBackgroundThread(s),你只会得到一个新的游标。所以你不需要手动调用它。

此外,由于过滤器将调用 runQueryOnBackgroundThread(s)runQueryOnBackgroundThread(s) 将调用 FilterQueryProvider.runQuery(s)。设置重新查询代码的最佳方法是调用

CursorAdpapter adapter;
adapter.setFilterQueryProvider(new FilterQueryProvider() {
@Override
public Cursor runQuery(CharSequence constraint) {
...
return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
}
});

然后在需要重新查询时使用adapter.getFilter().filter(s);

关于android - CursorAdapter 中的 setFilterQueryProvider() 和 runQueryOnBackgroundThread() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com