小编Gre*_* cz的帖子

分页库不会向我的PagedListAdapter发送任何数据

我有一个Android待办事项列表应用程序,使用Room访问SQLite数据库.然后我想在导航抽屉中列出可用列表.所以我使用了Paging Library.现在RecyclerView是空的,我不知道为什么.顺便说一句:我的名单都没有.我是初学者,所以我坚持官方教程.我已经发现,他们错了,ViewModel需要一个空的构造函数.现在的情况如下:设置适配器的方法成功调用(8),ViewModel创建(7)Adapter创建(1),setList()方法调用(9),但没有Holder创建(4),没有onCreateViewHolder或被onBindViewHolder调用(2,3),没有DiffCalback调用任何方法(5,6),只显示一个空的Recycler视图.该PagedList<SQLList>包含正确的信息,但没有信息被传递给适配器.有谁知道为什么?//对不起我的英语不好.

适配器类:

//this is my Adapter. SQLList is my object (Equivalent to the User object in 
the tutorial)
public class ListsAdapter extends PagedListAdapter<SQLList,ListsAdapter.Holder> {
private Context context;

public ListsAdapter(Context context) {
//1
    super(DIFF_CALLBACK);
    this.context = context;
}

@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
    //2
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.list_item,null);
    return new Holder(view);
}

@Override
public …
Run Code Online (Sandbox Code Playgroud)

android android-room android-paging

7
推荐指数
2
解决办法
2401
查看次数

具有自定义数据源偏移量的Android分页库在RecyclerView中

我正在制作一个待办事项列表应用程序,我想拥有一个精美的列表,其中任务按日期分组在标题下(类似于Splen-DO的内容)。我将Android Paging库(与RecyclerView一起)与Room(作为数据存储)一起使用。对于标题,我使用RecyclerView的视图类型,并将标题添加到列表中,我使用的是自定义数据源,该数据包包装了Room的数据源,而不是返回Task Object,它返回的对象可以是Task或标头。

它是这样的:

  • Paging Library要求我的数据源加载项目,它计算由标头引起的偏移量,从数据库加载数据,并将标头添加到“任务(和标头)”列表中并返回。
  • 分页库使用我的适配器创建ViewHolders和视图并显示结果

一切正常,直到我对数据库进行更改。物品无缘无故地在RecyclerView中移动,有些重复并且在RecyclerView的乞求中有一些空的占位符。到目前为止,我一直在尝试解决“乞讨时出现空的占位符”问题。

我已经检查了我的数据源,它返回正确的数据且没有偏移量。然后我检查了适配器。getItem()方法返回所有具有偏移量的项,并在开头返回一些空项。当我开始深入研究时,我发现它是由PagedStorage中的某些mLoadingNullCount引起的,我不知道它的用途,因为它没有文档。

屏幕截图

列表可正常
使用列表可正常
使用在我对列表进行更改之后,列表顶部的
空占位符空占位符
列表错误(gif)
错误列表

一些代码

请忽略一些变量和类名,我使用一些捷克语单词,以便它们不会与某些系统类混淆。
Ukol =任务

适配器: 数据源: 片段:UkolListAdapter.java
MyDatasource.java
UkolListFragment.java

笔记

如果您需要更多代码或解释,请发表评论,我会为您添加。

编辑

我发现了一个错误。从房间数据库中的数据源可能不会给你名单staritng,你要求的,但在那里就是了,在loadInitial()并为您提供的索引(其中返回列表开始)中int position的parametr onResult()。因此,我在上返回了错误的数据loadInitial()。因此,我添加了一些算法,用于计算实际返回的数据LoadInitial()。我没有解决问题。

java android android-recyclerview android-paging

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