Android 带有SortedList的RecyclerView未排序
我用a和a。SortedListAdapterCallback用 这是适配器构造函数中的相关代码:Android 带有SortedList的RecyclerView未排序,android,android-recyclerview,Android,Android Recyclerview,我用a和a。SortedListAdapterCallback用 这是适配器构造函数中的相关代码: mCallback=new SortedList.BatchedCallback(新适配器privateeventsCallback(this)); mList=新的分类列表(DataEntity.class,mCallback); 数据来自后端并加载到页面中。对于页面中的每个项目,我调用mList.add(item),并在每个页面的末尾调用mCallback.dispatchLastEven
mCallback=new SortedList.BatchedCallback(新适配器privateeventsCallback(this));
mList=新的分类列表(DataEntity.class,mCallback);
数据来自后端并加载到页面中。对于页面中的每个项目,我调用mList.add(item)
,并在每个页面的末尾调用mCallback.dispatchLastEvent()
我现在的问题是,RecyclerView显示的是一个无序列表
如果我向上和向下滚动,则项目将被订购
如果使用SortedListAdapterCallback而不使用SortedList.BatchedCallback,则项目也会被订购
如果使用SortedList.BatchedCallback,为什么在加载后显示RecyclerView无序列表?RecyclerView仅在调用
onBindViewHolder(ViewHolder holder,int position)
时更新任何视图。因此,即使您的mList
被排序,它也不会反映在RecyclerView上,除非您向外滚动并向内滚动
如果要手动更新RecyclerView,则每次更改数据集时(在您的情况下,每次调用回调时),都可以在适配器中使用
notifyDataSetChanged()
。调用时,将刷新RecyclerView,您应该可以获得已排序的列表。RecyclerView仅在调用onBindViewHolder(ViewHolder,int position)
时更新任何视图。因此,即使您的mList
被排序,它也不会反映在RecyclerView上,除非您向外滚动并向内滚动
如果要手动更新RecyclerView,则每次更改数据集时(在您的情况下,每次调用回调时),都可以在适配器中使用notifyDataSetChanged()
。当这被调用时,RecyclerView被刷新,您应该得到您的排序列表
mCallback = new SortedList.BatchedCallback<>(new AdapterPrivateEventsCallback(this));
mList = new SortedList<>(DataEntity.class, mCallback);