在NestedScrollView中使用PagedListAdapter

时间:2018-05-28 10:03:51

标签: android-nestedscrollview android-paging

我有一个带有PagedListAdapter的recyclerView。 当我将recyclerView放在NestedScrollView中时,PagedList无法计算列表的结尾,因此开始请求连续突发新数据。

主要问题是我应该如何在NestedScrollView

中使用PagedListAdapter

2 个答案:

答案 0 :(得分:0)

我有一个类似的问题,这似乎是由于NestedScrollView提供了无限的尺寸,所以RecyclerView会布局其所有子项。因此我查看了github,发现了NestedScrollView的实现,该实现通过将View.MeasureSpec.AT_MOST传递给RecyclerView来解决了问题:

https://gist.github.com/danaimset/abacaa50d746a4537686a08ecc33c1a9

答案 1 :(得分:0)

基于Android文档:

切勿将RecyclerView或ListView添加到滚动视图。这样做会导致不良的用户界面性能和不良的用户体验。

最好的新方法是使用MergeAdapter。它已添加到Recyclerview v1.2.0alpha。因此,添加此依赖项:

implementation "androidx.recyclerview:recyclerview:1.2.0-alpha03"

如果要将两个适配器放在一个recyclerView中,请遵循此指南:

然后创建一个MakeAdapter实例并在其上传递您的适配器,然后将其设置为RecyclerViewAdapter:

MergeAdapter ma = new (firstAdapter, secondAdapter);
myRecyclerView.setAdapter(ma);

如果您有布局和Pagedlist,请遵循此指南:

然后制作Make和Simple ViewHolder,并在其上放置第一个布局。然后使MergeAdapter,然后添加布局的适配器,然后添加PagedList的适配器,然后添加PagedList的适配器:

MergeAdapter ma = new MergeAdapter();
ma.addAdaper(simpleAdapter);
ma.addAdapter(pagedListAdapter);

然后将这个mergeAdapter设置为recyclerView的适配器;

myRecyclerView.setAdapter(ma);