Android 多个RecyclerViews和适配器数据偏移量
我有多个使用common RecyclerView.Adapter的RecyclerView。有没有办法告诉RecyclerView使用某个偏移量从适配器获取数据?类似于第一视图从适配器获取0-15个项目,第二视图获取15-30个项目等等。您的意思是 编辑: 试试这个。 在所需位置为筛选数据创建单独的数据结构Android 多个RecyclerViews和适配器数据偏移量,android,android-recyclerview,Android,Android Recyclerview,我有多个使用common RecyclerView.Adapter的RecyclerView。有没有办法告诉RecyclerView使用某个偏移量从适配器获取数据?类似于第一视图从适配器获取0-15个项目,第二视图获取15-30个项目等等。您的意思是 编辑: 试试这个。 在所需位置为筛选数据创建单独的数据结构 private List<Object> data; private List<Object> dataToShow; public CustomAdapter(L
private List<Object> data;
private List<Object> dataToShow;
public CustomAdapter(List<Object> data){
this.data = data;
this.dataToShow = new ArrayList<>(data);
}
这应该有效在FragmentStatePagerAdapter上为viewpager中的片段提供位置和对象列表:
@Override
public Fragment getItem(int position) {
return YourFragment.newInstance(position,yourListOfObjects);
}
然后在YourFragment中,根据位置从列表中选取15项,制作一个Adpeter,例如RxJava,但您可以修改它,以使用常规Java:
int positionOfFragment;
List<Product> list;
Observable
.just(list)
.take(positionOfFragment*15)
.subscribe(new Action1<List<Product>>() {
@Override
public void call(List<Product> orders) {
ProductAdapter adapter = new ProductAdapter(orders, getActivity());
//setAdapter to RecyclerView;
}
});
intpositionoffragment;
名单;
可观察
.just(列表)
.取下(碎片位置*15)
.订阅(新操作1(){
@凌驾
公共作废通知(列出订单){
ProductAdapter=新的ProductAdapter(订单,getActivity());
//将适配器设置为RecyclerView;
}
});
否。我有多页的ViewPager,其中每页包含固定项目数的RecyclerView。所有RecyclerViews都有相同的适配器,但根据页面的不同,应该显示从某个位置开始的项目。所以第一页的recyclerview显示了前15个项目,第二页的recyclerview显示了接下来的15个项目,以此类推,但第二个解决方案在我的情况下不起作用。不同的recyclerviews可以在不同的时间甚至在同一时间从适配器请求数据,但是您的适配器实现期望视图一个接一个地请求数据。谢谢,我已经为每个页面实现了类似的功能,使用单独的适配器。我想也许有更优雅的方式来处理这种情况。@AndreiLapshin我不认为还有其他方式,那更优雅。这个解决方案真的没有错。
@Override
public Fragment getItem(int position) {
return YourFragment.newInstance(position,yourListOfObjects);
}
int positionOfFragment;
List<Product> list;
Observable
.just(list)
.take(positionOfFragment*15)
.subscribe(new Action1<List<Product>>() {
@Override
public void call(List<Product> orders) {
ProductAdapter adapter = new ProductAdapter(orders, getActivity());
//setAdapter to RecyclerView;
}
});