让我简要介绍一下我要做什么。因此,基本上,我是Android Jetpack中的此分页库的新手,并且正在尝试实现分页列表。后端已经按请求进行了分页(后端默认每页返回25个项目),所以我要做的就是发出请求并指定要显示的页面,然后指定项目然后我需要的将被退回。我能够显示var xxx = function() {
$('#xxx').jsGrid({
height: '250px',
width: '100%',
inserting: true,
editing: true,
sorting: true,
invalidNotify: function(args) {
$('#alert-error-not-submit').removeClass('hidden');
},
fields: [{
name: "sensorNumber",
title: $('#title_meter_number').val(),
type: "number",
validate: "required"
}, {
name: "liters",
title: $('#title_liters').val(),
type: "number",
validate: "required"
}, {
name: "measuredValue",
title: $('#title_indication_of_the_meter').val(),
type: "number",
validate: "required"
}, {
type: "control"
}]
});
};
并使之工作,但是滚动到最低的项目后,它将不会触发loadInitial()
。
我的loadAfter()
和PagedListAdapter
非常简单,因此我认为在这里发布不会有所帮助。 RecyclerView
通过数据绑定返回ViewHolder。 onCreateViewHolder
只是在我的Viewholder中调用一个方法并设置项目。我没有重写onBindViewHolder
方法。关于我的适配器和getItem()
。
但是,下面是我的其他代码段。请注意,出于隐私目的,我已经修改了变量和方法名称。
我的LivePagedListBuilder配置:
DiffCallback
我在视图中观察LiveData的方式:
public MyViewModel() {
PagedList.Config config =
new PagedList.Config.Builder()
.setPageSize(1)
.setPrefetchDistance(1)
.build();
items = new LivePagedListBuilder<>(myDataSourceFactory, config).build();
}
public LiveData<PagedList<Item>> getItems() {
return items;
}
我的数据源: ItemKeyedDataSource
viewModel.getItems().observe(this, items -> {
adapter.submitList(items);
});