RecycleView嵌套RecycleView

思路:RecycleView嵌套一个RecycleView首先要确定一个rootRecycleView这个rootRecycleView是要包含多个子RecycleView,在写rootRecycleView的适配器的时候其子项就是一个recycleView,然后再onBindViewHolder方法中为子recycleView设置自己的适配器。子recycleView的适配器就跟普通的适配器一样设置就行。下面是RootRecycleViewAdapter。
public class RootRecycleViewAdapter extends RecyclerView.Adapter {
    private ArrayList<RecyclerView.Adapter> adapterArrayList;
    private Context context;
    public RootRecycleViewAdapter(ArrayList<RecyclerView.Adapter> arrayList) {
        this.adapterArrayList = arrayList;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycle_first, parent, false);
        MyHolder holder = new MyHolder(view);
        context=parent.getContext();

        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {//你也可以在这里为每个子RecycleView设置不同的布局:比如GridLayout,LinearLayout等
        MyHolder myHolder = (MyHolder) holder;
       //先把子类的适配器放入一个ArrayList的集合中然后根据相应的位置获取不同的子类适配器
        myHolder.recycleView.setAdapter(adapterArrayList.get(position));//设置子类自己的适配器
    }

    @Override
    public int getItemCount() {
        return adapterArrayList.size();//返回子类适配器的数目
    }

    class MyHolder extends RecyclerView.ViewHolder {
        RecyclerView recycleView;


        public MyHolder(View itemView) {
            super(itemView);
            recycleView = (RecyclerView) itemView.findViewById(R.id.first_recycle);
        }
    }

}
下面是MainActivity的代码
public class MainActivity extends AppCompatActivity {
    private MyRecycleView rootRecycle;
    private ArrayList<RecyclerView.Adapter> adapterArrayList;
    private FirstRecycleAdapter firstAdapter;
    private SecondRecycleAdapter secondAdapter;
    private RecyclerViewUtil util;
    private RootRecycleViewAdapter rootAdapter;
    private FourRecycleAdapter fourRecycleAdapter;
    private ThridRecycleAdapter thridRecycleAdapter;
    private ContentLoadingProgressBar progressBar;



    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.content_main_fragment);
        
        intit();
        rootAdapter = new RootRecycleViewAdapter(adapterArrayList);//自己写的工具类就是为rootRecyclView设置适配器
        util = new RecyclerViewUtil(rootRecycle, rootAdapter, this);

    }

    public void intit() {//第一个子适配器设置
        adapterArrayList = new ArrayList<>();
        ArrayList<FirstRecycleData> firstRecycleDatas = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            firstRecycleDatas.add(new FirstRecycleData(R.drawable.weather_18, "周" + i, "晴天" + i));
        }firstAdapter = new FirstRecycleAdapter(firstRecycleDatas);
	//第二个子recycleView的适配器
        ArrayList<SecondRecycleData> secondRecycleDatas = new ArrayList<>();
        secondRecycleDatas.add(new SecondRecycleData(30, 50,"优"));
	secondAdapter = new SecondRecycleAdapter(secondRecycleDatas);
	//第三个
        ArrayList<ThridRecycleData> thridRecycleDatas = new ArrayList<>();
        thridRecycleDatas.add(new ThridRecycleData(R.drawable.fengxiang, "风向", "", "风力", "东北风", "", "3级"));
        thridRecycleDatas.add(new ThridRecycleData(R.drawable.richu, "日出", "", "日落", "06:33", "", "17:26"));
        thridRecycleDatas.add(new ThridRecycleData(R.drawable.shidu, "", "湿度", "", "", "84", ""));
        thridRecycleAdapter = new ThridRecycleAdapter(thridRecycleDatas);
	//第四个
        ArrayList<FourRecycleData> fourRecycleDatas = new ArrayList<>();
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleDatas.add(new FourRecycleData(R.drawable.yundong, "运动指数", "较不适宜"));
        fourRecycleAdapter = new FourRecycleAdapter(fourRecycleDatas);


        
        //将子适配器放入ArrayList集合中
        adapterArrayList.add(firstAdapter);
        adapterArrayList.add(secondAdapter);
        adapterArrayList.add(thridRecycleAdapter);
        adapterArrayList.add(fourRecycleAdapter);
    }



下面是RecycleViewUtil类,为rootRecycleView设置适配器
public class RecyclerViewUtil {
    private RecyclerView rootRecycleView;

    private Context context;

    public RecyclerViewUtil(RecyclerView rootRecycleView, RecyclerView.Adapter adapter, Context context) {
        this.context=context;
        this.rootRecycleView = rootRecycleView;

        setAdapter(adapter);
    }
    private void setAdapter(RecyclerView.Adapter adapter){
        rootRecycleView.setAdapter(adapter);
        LinearLayoutManager manager = new LinearLayoutManager(context);
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        rootRecycleView.setLayoutManager(manager);
    }
}
最后的实现效果可以看到实现的还不错

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值