相关疑难解决方法(0)

PagedListAdapter 不使用 DiffUtil 使数据无效

每次我调用无效数据时,都不会使用我的 DIFF_UTIL。日志没有显示,整个列表都用新数据更新,导致屏幕移动位置等。不确定这里是什么问题。

我有PagedListAdapter一个LiveData<PagedList<Post>> postList,我打电话postList.getValue().getDataSource().invalidate();来刷新我的数据。

我有 DIFF_UTIL

 public static DiffUtil.ItemCallback<Post> DIFF_CALLBACK =
            new DiffUtil.ItemCallback<Post>() {

                @Override
                public boolean areItemsTheSame(Post oldItem, Post newItem) {
                    Log.d(TAG, "areItemsTheSame with result: "
                            + (oldItem.getId() == newItem.getId()));
                    Log.d(TAG, "areItemsTheSame Old Item is: " + oldItem.toString());
                    Log.d(TAG, "areItemsTheSame New Item is: " + newItem.toString());
                    return oldItem.getId() == newItem.getId();
                }

                @Override
                public boolean areContentsTheSame(Post oldItem, Post newItem) {
                    Log.d(TAG, "areContentsTheSame with result: " + oldItem.equals(newItem));
                    Log.d(TAG, "areContentsTheSame Old Item is: " + …
Run Code Online (Sandbox Code Playgroud)

android pagedlist android-adapter

7
推荐指数
1
解决办法
1386
查看次数

实现 Paging Library 3.0 过滤/搜索功能

使用paging 3.0,我成功地实现了它。现在我想为其添加搜索功能。

我只是显示照片库以及分页功能。现在我想在有人搜索时使分页无效

但每当我在搜索上调用无效时。应用程序崩溃..

照片片段.kt

@AndroidEntryPoint
class PhotosFragment : BaseFragment<FragmentPhotosBinding,PhotosFragmentViewModel>(R.layout.fragment_photos),
    SearchView.OnQueryTextListener, LifecycleObserver {
    override val mViewModel: PhotosFragmentViewModel by viewModels()

    private lateinit var photoAdapter: PhotoCollectionAdapter

    override fun onAttach(context: Context) {
        super.onAttach(context)
        activity?.lifecycle?.addObserver(this)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setHasOptionsMenu(true)
        ///mViewModel.setFilter(getString(R.string.search_filter_default_value))
        initAdapter()
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreated(){
        mViewModel.trendingPhotos.observe(viewLifecycleOwner, Observer {
            photoAdapter.submitData(lifecycle,it)
        })
    }

    private fun initAdapter() {
        photoAdapter = PhotoCollectionAdapter()
        photoAdapter.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY

        mBinding.recyclerView.apply {
            layoutManager = LinearLayoutManager(context)
            setHasFixedSize(true)
            adapter = photoAdapter
        }

        photoAdapter.addLoadStateListener { loadState -> …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewmodel android-paging android-paging-3

1
推荐指数
1
解决办法
4901
查看次数