gpt4 book ai didi

java - 如何在 Adapter 类之外更新 RecyclerView Adapter

转载 作者:行者123 更新时间:2023-12-04 08:59:38 28 4
gpt4 key购买 nike

我正在制作一个 android 应用程序,它允许用户在 editText 中输入关键字,当他们点击提交时,下面的 recyclerview 将显示来自 API 请求的结果。
我的 recyclerView 适配器类中有一个 updateList() 方法

list = savedInfo.getResult(); // get updated list from a singleton class
notifyDataSetChanged(); // update the recyclerView
我在成功发出 API 请求后调用此方法。但是,它现在正在工作,recyclerView 没有更新。
mSearchBox 是editText 允许用户输入关键字,这里是onEditorAction,它会进行API 调用,如果调用成功,它将调用UpdateList(),然后适配器将获取更新的列表并执行notifyDataSetChanged()
        mSearchBox.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
if (i == EditorInfo.IME_ACTION_DONE) {
HttpRequest httpRequest = new HttpRequest();
mHomeText.setText(textView.getText());
try {
if (httpRequest.makeCall(textView.getText().toString())){
adapter.updateList();
}
else {
// showing error message
}
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
return false;
}
});
另外,这里是设置我的适配器的步骤
    final ResultListAdapteradapter = new ResultListAdapter();
mResult.setAdapter(adapter);
mResult.setLayoutManager(new LinearLayoutManager(getContext()));
调试步骤:我尝试设置断点并发现 API 请求和我的单例类都在工作,问题只是 RecyclerView。
非常感谢!

最佳答案

当你做

list = savedInfo.getResult();
notifyDataSetChanged();
每次创建新的列表实例时都不会在任何地方引用旧的。所以,而不是分配到列表你应该做
list.clear()
list.addAll(savedInfo.getResult());
notifyDataSetChanged();
不要忘记初始化 list如果之前没有做过。

关于java - 如何在 Adapter 类之外更新 RecyclerView Adapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63627231/

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