activity 中的代码---------------
public class ThirdActivity extends Activity {
private RecyclerView recyclerView;
private ArrayList<String> list;
private MoreItemAdapter moreItemAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
recyclerView = findViewById(R.id.recycler_view);
//数据
list = new ArrayList<>();
for (int i=0; i<1000;i++){
list.add("这是条目"+i);
}
recyclerView.setLayoutManager(new LinearLayoutManager(ThirdActivity.this));
//
moreItemAdapter = new MoreItemAdapter(ThirdActivity.this, list);
recyclerView.setAdapter(moreItemAdapter);
}
}
适配器中的代码----------------------------------------
/**
* Created by Dash on 2017/11/27.
*
* 做多条目的适配器
*/
public class MoreItemAdapter extends RecyclerView.Adapter{
private Context context;
private ArrayList<String> list;
private final int TEXT_ONLY = 0;
private final int IMAGE_LEFT = 1;
private final int IMAGE_RIGHT = 2;
public MoreItemAdapter(Context context, ArrayList<String> list) {
this.context = context;
this.list = list;
}
//根据当前展示的视图创建ViewHolder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder holder = null;
View view;
switch (viewType){
case TEXT_ONLY:
view = LayoutInflater.from(context).inflate(R.layout.item_water_layout,parent,false);
holder = new TextOnlyHolder(view); //不在使用泛型Holder类 创建多个Holder
break;
case IMAGE_LEFT:
view = LayoutInflater.from(context).inflate(R.layout.image_left_layout,parent,false);
holder = new ImageLeftHolder(view);
break;
case IMAGE_RIGHT:
view = LayoutInflater.from(context).inflate(R.layout.image_right_layout,parent,false);
holder = new ImageRightHolder(view);
break;
}
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//赋值
if (getItemViewType(position) == TEXT_ONLY){
((TextOnlyHolder)holder).textView.setText(list.get(position));
}else if (getItemViewType(position) == IMAGE_LEFT){
((ImageLeftHolder)holder).textView.setText(list.get(position));
}else if (getItemViewType(position) == IMAGE_RIGHT){
((ImageRightHolder)holder).textView.setText(list.get(position));
}
}
@Override
public int getItemCount() {
return list.size();
}
/**
* 返回的是当前条目的类型
* @param position
* @return
*/
@Override
public int getItemViewType(int position) {
if (position%3 == 0){
return TEXT_ONLY;
}else if (position%3 ==1){
return IMAGE_LEFT;
}else {
return IMAGE_RIGHT;
}
}
}