android-fragments 当数据来自数据存储时,如何在应用程序启动时显示回收器视图项?

ocebsuys  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(114)

我在一个片段上使用recylcer视图,并通过查询从datastore中获取要在recyler视图上显示的数据。我想在打开youtube和instagram等应用程序时在recyler视图上显示数据,但我不能这样做。当我添加一个按钮并将recyler.setadapter放在onClicklister中时,它在按钮单击后工作。但我想在应用程序启动时这样做。如果你感到困惑,请看下面的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view=inflater.inflate(R.layout.fragment_home, container, false);
    recyclerView=view.findViewById(R.id.recyclerView);

    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    arrayList=new ArrayList<>();
  apiQuery();
    adapter=new MyAdapter(getContext(),arrayList);
    view.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            recyclerView.setAdapter(adapter);
        }
    });

    return view;
}
private void apiQuery(){
    Amplify.API.query(
            ModelQuery.list(Todo.class, Todo.NAME.contains(" ")),
            response -> {
                for (Todo todo : response.getData()) {
                  arrayList.add(todo);
                    Log.i("MyAmplifyApp", todo.getName());
                }
            },
            error -> Log.e("MyAmplifyApp", "Query failure", error)
    );
}
9udxz4iz

9udxz4iz1#

您正在按钮单击方法中设置适配器。您可以在启动画面等上预加载数据,并将数据保存在设备上,然后在加载片段/活动时。您可以设置适配器以加载数据。

pepwfjgg

pepwfjgg2#

您必须在收到来自API的响应后将数据发送到Adapter类。然后更新recyclerview适配器的列表并调用notifyDataSetChanged()方法。
请参考以下示例代码;
在片段中

response -> {
                for (Todo todo : response.getData()) {
                  arrayList.add(todo);
                    Log.i("MyAmplifyApp", todo.getName());
                }
                adapter.updateData(arrayList)
            }

在适配器类中

fun updateData(list: ArrayList<Model>) {
    arraylist.addAll(list)
    notifyDataSetChanged()
}

相关问题