【问题标题】:how to read all value from room data base and show into recyclerview?如何从房间数据库中读取所有值并显示到 recyclerview 中?
【发布时间】:2018-09-26 10:53:46
【问题描述】:

我正在使用房间数据库来存储来自 URL 的 json 数据,它工作正常,但是在从数据库访问数据以在 recyclerview 上显示时,它有时会给出一个结果,如果我第二次打开应用程序,则显示第二个对象,我是新房间里的任何人都可以建议我如何做到这一点,我的代码是。 应用我的 pojo 课程。 我的适配器类是。

   recyclerView = view.findViewById(R.id.recyclerView);
    postsAdapter = new PostsAdapter(new ArrayList<Example>());
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    addBorrowViewModel = ViewModelProviders.of(this).get(AddBorrowViewModel.class);
    addBorrowViewModel.getItemAndPersonList().observe(getActivity(), new Observer<List<Example>>() {
        @Override
        public void onChanged(@Nullable List<Example> itemAndPeople)
        {
            recyclerViewAdapter.addAll(itemAndPeople);
        }
    });

【问题讨论】:

  • 发布你的userDao接口,getAll()查询
  • 你好,还有你的RecyclerviewAdapzer的代码。
  • 嗨@Vall0n 更新请检查一次。
  • 考虑阅读以下代码实验室:codelabs.developers.google.com/codelabs/…
  • @EpicPandaForce 我做了同样的事情,但第一次并没有一次获取所有数组列表,它的数组列表大小为 1,第二次获取数据后,它将增加到 2,依此类推..

标签: java android android-recyclerview android-room


【解决方案1】:

关注thisthis

您没有在 dao 中添加 LiveData。添加 livedata,它会自动为您返回列表。 不过

在你的道

@Query("select * from table_name")
public LiveData<List<Model>> getAll();

在您的活动或片段中

 yourViewModel.getAll().observe(this, new Observer<List<Model>>() {
        @Override
        public void onChanged(@Nullable List<Model> models) {
            adapter.addAll(models);
        }
    });

【讨论】:

  • 它工作正常问题首先出现在打开应用程序后它只显示第一行只有当我再次打开应用程序时它会添加另一行并且每次我第一次出现时都会发生,然后添加第二行,然后添加一个,依此类推...
  • 例如,如果我在我的应用程序中打开,则数组列表大小为 1,如果第二个打开应用程序,则数组列表大小为 2,并且每次打开应用程序并获取数据时它都会增加。跨度>
  • 每次新数据或相同数据一次又一次地添加
  • 每次都有新数据
  • 这里是否需要循环?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多