我正在创建一个待办事项列表应用程序,我希望拥有那个花哨的列表,其中任务分组在带有日期的标题下(类似于Splen-DO所具有的)。我正在使用Android Paging库(带有RecyclerView)和Room(作为数据存储)。对于标题,我正在使用RecyclerView的视图类型,并将标题添加到我正在使用自定义数据源的列表中,它包含Room的数据源而不是返回任务对象,它返回一个可以是Task或者报头中。
它的工作原理如下:
在我对数据库进行更改之前,一切正常。物料在RecyclerView中无缘无故变化,有些重复,并且在RecyclerView的乞讨中有一些空的占位符。到目前为止,我一直在努力解决“乞讨”问题上的“空占位符”。
我先检查了我的数据源,它返回没有偏移量的正确数据。然后我检查了适配器。 getItem()方法返回所有带偏移量的项目和一些开头的空项目。当我开始深入挖掘时,我发现它是由PagedStorage中的一些mLoadingNullCount引起的,我不知道它用于什么,因为它没有文档。
工作权清单
The list working right
在我对列表进行更改后,列表顶部的空占位符
Empty placeholders
列出错误(gif)
Bugged list
请忽略一些变量和类名,我使用一些捷克语,这样他们就不会搞砸某些系统类 Ukol =任务
适配器:UkolListAdapter.java
数据源:MyDatasource.java
片段:UkolListFragment.java
如果您需要更多代码或说明,请留言,我会为您添加。
我发现了一个错误。来自Room数据库的数据源可能无法在loadInitial()
上的int position
onResult()
参数中为您提供您所请求的列表staritng,但是它在何处,并为您提供索引(返回列表的起始位置) 1}}。所以我在loadInitial()
上返回了错误的数据。所以我添加了一些algorythms,用于计算我在LoadInitial()
中实际返回的数据。我没有解决问题。
答案 0 :(得分:0)
您是否在setEnablePlaceholders(false)
中尝试了PagedList.config.Builder
?
https://developer.android.com/topic/libraries/architecture/paging/data#define-paging-config