多个RecyclerViews和适配器数据偏移量

时间:2015-09-15 08:07:11

标签: android android-recyclerview

我使用常见的RecyclerView.Adapter有多个RecyclerViews。有没有办法告诉RecyclerView使用一些偏移从适配器获取数据?像第一个视图的东西从适配器获得0-15个项目,第二个视图获得15-30个等等。

2 个答案:

答案 0 :(得分:1)

你的意思是ExpandableListView

EDITED: 试试这个。 为所需位置的过滤数据创建单独的数据结构

private List<Object> data;
private List<Object> dataToShow;
public CustomAdapter(List<Object> data){
     this.data = data;
     this.dataToShow = new ArrayList<>(data);
}

...在所有重写方法中都使用dataToShow字段

创建过滤数据的方法

public void showDataAtPositions(int startPos, int endPos){
    dataToShow.clear();
    for(int index = 0; index < data.size(); index++){
        if(index >=startPos && index <= endPos){
            dataToShow.add(data.get(index));
        }
    }
    notifyDataSetChanged();
}

然后只需调用此方法

adapter.showDataAtPositions(0, 15);
adapter.showDataAtPositions(16, 30);

这应该有效

答案 1 :(得分:1)

将位置和对象列表分配给FragmentStatePagerAdapter中viewpager中的Fragment:

 @Override
        public Fragment getItem(int position) {
            return YourFragment.newInstance(position,yourListOfObjects);
        }

然后根据位置在你的YourFragment中取出List中的15个项目并制作一个adpater,例如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;
                    }
                });