请参阅android文档中有关RecyclerView适配器的内容
Adapter类在很大程度上已经是一个“泛型”适配器。 您提供了一个扩展RecyclerView.ViewHolder的自定义类来包含您的布局视图
public static class MyViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView textView;
public MyViewHolder(TextView v) {
super(v);
textView = v;
}
}
然后在onBindViewHolder()方法中填充视图
public void onBindViewHolder(MyViewHolder holder, int position) {
// - get element from your dataset at this position
// - replace the contents of the view with that element
holder.textView.setText(mDataset[position]);
}
没有什么可以阻止您在多个活动中使用相同的RecycerView适配器。 如果您希望在每个activity中有不同的布局,并分别填充视图数据,我认为应该有4个不同的适配器。
或者,您可以将布局选择逻辑放在onCreateViewHolder()方法中,将填充视图数据放在onBindViewHolder()中
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = null;
switch (viewType) {
case: LAYOUT_1:
v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.mylayout1, parent, false);
case: LAYOUT_2:
v = (TextView) LayoutInflater.from(parent.getContext())
.inflate(R.layout.mylayout2, parent, false);
default:
//default layout behaviour
}
MyViewHolder vh = new MyViewHolder(v);
return vh;
}