使用RecyclerView实现简单的聊天页面

需要先创建两个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);
            }
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值