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);
}
}
最后的实现效果可以看到实现的还不错
[java] view plain copy
  
---------------------
作者:lzjqcc
来源:CSDN
原文:https://blog.csdn.net/lzjqcc/article/details/53192656
版权声明:本文为博主原创文章,转载请附上博文链接!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM