【问题标题】:android paging how to refresh data?android分页如何刷新数据?
【发布时间】:2021-01-09 10:11:36
【问题描述】:

当dataSource改变时,如何刷新布局?如果你知道,请告诉我,谢谢。

adapter = new CollectAdapter(context, CollectionFragment.this);
    adapter.setHasStableIds(true);
    config = new PagedList.Config.Builder()
            .setPageSize(8) 
            .setEnablePlaceholders(false) 
            .setInitialLoadSizeHint(8)
            .build();
    liveData = new LivePagedListBuilder(new DataSourceFactory(), config).build();
    liveData.observe(this, new Observer<PagedList<Collection>>() {
        @Override
        public void onChanged(PagedList<Collection> collections) {
            adapter.submitList(collections);
        }
    });
    recyvleView = view.findViewById(R.id.rc_collect);
    recyvleView.addItemDecoration(new RecycleViewItemDecoration(5, 5));
    LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
    recyvleView.setLayoutManager(layoutManager);
    recyvleView.setAdapter(adapter);

【问题讨论】:

  • RecyclerView 项目布局在dataSource改变时自动改变。
  • 数据变了,dataSource怎么改?
  • 您想知道如何更改数据源吗?
  • 数据来自sqlite,sqlite数据已更改,我想知道如何更改dataSource。

标签: android android-paging


【解决方案1】:

您可以通过调用invalidate方法更改数据源:

livedata.value.dataSource.invalidate()

【讨论】:

【解决方案2】:

对 Ahmed Garhy 答案的改进,可限制垃圾邮件刷卡。这仍然是一个棘手的解决方案,但提供了一些不同的用户体验。

swiperefresh.setOnRefreshListener {
  movieListAdapter.refresh()
  swiperefresh.isRefreshing = false
}
lifecycleScope.launchWhenCreated {
        adapter.addLoadStateListener { loadState ->
            //this reveals RV when loading is complete
            rv_list.isVisible = loadState.source.refresh is LoadState.NotLoading
            ///this keeps indicating that data is refreshing now
            progress_bar.isVisible = loadState.source.refresh is LoadState.Loading
            //this turns off swipeRefresh while updating
            swipe_refresh.isEnabled = loadState.source.refresh is LoadState.NotLoading
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2016-02-04
    • 2017-12-02
    相关资源
    最近更新 更多