需要先创建两个item,每个item只有一个图片和一个textview
需要一个getItemViewType方法,返回ViewHolder的类型
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
// 声明一个数据集合,用来处理数据
private List<MyData> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview1);
// 设置布局管理器类型
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// 创造数据
createData();
MyAdapter adapter = new MyAdapter();
recyclerView.setAdapter(adapter);
}
// 创造数据
public void createData() {
list = new ArrayList<>();
MyData data1 = new MyData("123", R.drawable.u1, 0);
MyData data2 = new MyData("321", R.drawable.u2, 1);
MyData data3 = new MyData("456", R.drawable.u2, 1);
MyData data4 = new MyData("789", R.drawable.u1, 0);
list.add(data1);
list.add(data2);
list.add(data3);
list.add(data4);
}
class MyData {
String text;
// 标志消息的类型
int img;
int type;
public MyData(String text, int img, int type) {
this.img = img;
this.text = text;
this.type = type;
}
}
// 创建一个adapter
class MyAdapter extends RecyclerView.Adapter {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0:
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_0, null);
MyViewHolder0 holder0 = new MyViewHolder0(view);
return holder0;
case 1:
View view1 = LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item_1, null);
MyViewHolder1 holder1 = new MyViewHolder1(view1);
return holder1;
}
return null;
}
// 返回ViewHolder的类型
@Override
public int getItemViewType(int position) {
return list.get(position).type;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// 获取数据得到类型
MyData data = list.get(position);
int type = data.type;
switch (type) {
case 0:
MyViewHolder0 holder0 = (MyViewHolder0) holder;
holder0.textview.setText(data.text);
holder0.imageview.setImageResource(data.img);
break;
case 1:
MyViewHolder1 holder1 = (MyViewHolder1) holder;
holder1.textview.setText(data.text);
holder1.imageview.setImageResource(data.img);
break;
}
}
@Override
public int getItemCount() {
return list.size();
}
// 创建布局需要的不同的viewholder
class MyViewHolder0 extends RecyclerView.ViewHolder {
TextView textview;
ImageView imageview;
public MyViewHolder0(View itemView) {
super(itemView);
textview = (TextView) itemView.findViewById(R.id.textview1);
imageview = (ImageView) itemView.findViewById(R.id.imageview1);
}
}
class MyViewHolder1 extends RecyclerView.ViewHolder {
TextView textview;
ImageView imageview;
public MyViewHolder1(View itemView) {
super(itemView);
textview = (TextView) itemView.findViewById(R.id.textview2);
imageview = (ImageView) itemView.findViewById(R.id.imageview2);
}
}
}
}