每次我调用无效数据时,都不会使用我的 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) 使用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