gpt4 book ai didi

android - 使用 OnQueryTextListener 刷新 AsyncTaskLoader 的查询

转载 作者:行者123 更新时间:2023-11-30 03:03:23 27 4
gpt4 key购买 nike

我有一个自定义的 AsyncTaskLoader,它根据输入到 ActionBar 搜索中的一些查询文本执行搜索:

class SearchLoader extends AsyncTaskLoader<List<String>> {

private static final String TAG = SearchLoader.class.getName();

private List<String> data;
private String query;
private DataStore dataStore;

public SearchLoader(Context context, DataStore dataStore, String query) {
super(context);
this.dataStore = dataStore;
this.query = query;
}

@Override
public List<String> loadInBackground() {
try {
return dataStore.find(query);
} catch (SearchException e) {
Log.e(TAG, String.format("Error performing search, query: %s", query), e);
}

return null;
}
}

我连接了一个 OnQueryTextListener 以在查询更改时通过执行新搜索来刷新加载程序的数据:

@Override
public boolean onQueryTextChange(String newText) {
query = !TextUtils.isEmpty(newText) ? newText : null;
getLoaderManager().restartLoader(SEARCHRESULTS_LOADER, null, this);
return false;
}

我知道我需要调用 getLoaderManager().restartLoader。

但是,我不确定的是如何在加载程序本身上设置新的查询文本?

  1. 我无权访问加载程序实例来调用 setter
  2. 据我所知,restartLoader 的参数仅在需要创建新加载器时使用

推荐的方法是什么?

最佳答案

根据我的经验,restartLoader() 会导致 onCreateLoader() 被调用。我不知道为什么会这样,因为它似乎与文档中关于重新使用现有加载器的内容相反。您的代码已经将保存的查询实例变量传递给加载器构造函数,因此它应该执行您想要的操作。

This Android sample来自 Google 的显示 restartLoader() 在查询文本更改时被调用。

关于android - 使用 OnQueryTextListener 刷新 AsyncTaskLoader 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215141/

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