RecyclerView的用法

代码大多转载第一行代码:


public class MainActivity
        extends ActionBarActivity
{

    private List<Msg> mMsgList = new ArrayList<>();
    private EditText inputText;
    private Button send;
    private RecyclerView mRecyclerView;
    private MSgAdapter mMSgAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initMsgs();
        inputText = (EditText) findViewById(R.id.input_text);
        send = (Button) findViewById(R.id.send);
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
        mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager
(2,StaggeredGridLayoutManager.VERTICAL));// 纵向 2行
        mMSgAdapter = new MSgAdapter(mMsgList);
        mRecyclerView.setAdapter(mMSgAdapter);

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String content = inputText.getText()
                                    .toString();
                if (!"".equals(content)){
                    Msg msg = new Msg(content,Msg.TYPE_SENT);
                    mMsgList.add(msg);
                    mMSgAdapter.notifyItemInserted(mMsgList.size()-1);// 刷新显示
                    mRecyclerView.scrollToPosition(mMsgList.size()-1);// 定位到最后一行
                    inputText.setText("");// 清空
                }

            }
        });

    }

    private void initMsgs() {
        Msg msg1 = new Msg("美女,你好",Msg.TYPE_RECEIVED);
        mMsgList.add(msg1);
        Msg msg2 = new Msg("?",Msg.TYPE_SENT);
        mMsgList.add(msg2);
        Msg msg3 = new Msg("美女,你长的好美",Msg.TYPE_RECEIVED);
        mMsgList.add(msg3);
        Msg msg4 = new Msg("我好喜欢",Msg.TYPE_RECEIVED);
        mMsgList.add(msg4);
        Msg msg5 = new Msg("呵呵",Msg.TYPE_SENT);
        mMsgList.add(msg5);
        Msg msg6 = new Msg("美女,什么时候我请你吃饭",Msg.TYPE_RECEIVED);
        mMsgList.add(msg6);
        Msg msg7 = new Msg("谢谢,不用",Msg.TYPE_SENT);
        mMsgList.add(msg7);
        for (int i = 0; i < 20000; i++) {
            mMsgList.add(msg6);
        }


    }


}



public class MSgAdapter extends RecyclerView.Adapter<MSgAdapter.ViewHolder> {

    private List<Msg> mMsgList;

    // 第一步 Adapter自定义的Adapter
    static class ViewHolder extends RecyclerView.ViewHolder{
        LinearLayout leftLayout;
        LinearLayout rightLayout;
        TextView leftMsg;
        TextView rightMsg;

        public ViewHolder(View view) {
            super(view);
            leftLayout = (LinearLayout) view.findViewById(R.id.left_layout);
            rightLayout = (LinearLayout) view.findViewById(R.id.right_layout);
            leftMsg = (TextView) view.findViewById(R.id.left_msg);
            rightMsg = (TextView) view.findViewById(R.id.right_msg);
        }
    }

    // 第二步 构造函数,将数据与Adapter进行关联
 public MSgAdapter(List<Msg> msgList) {
        mMsgList = msgList;
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.msg_item,parent,false);
        return new ViewHolder(view) ;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Msg msg = mMsgList.get(position);
        if (msg.getType() == Msg.TYPE_RECEIVED){
            // 左边收到的消息
            holder.leftLayout.setVisibility(View.VISIBLE);
            holder.rightMsg.setVisibility(View.GONE);
            holder.leftMsg.setText(msg.getContent());
        }else {
            // 右边
            holder.leftLayout.setVisibility(View.GONE);
            holder.rightMsg.setVisibility(View.VISIBLE);
            holder.rightMsg.setText(msg.getContent());
        }
    }

    @Override
    public int getItemCount() {
        return mMsgList.size();
    }

}
Demo下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RecyclerView 是 Android 系统中的一个视图组件,它可以用来展示列表、网格等数据集合。相对于 ListView 和 GridView,RecyclerView 更加灵活,支持自定义布局和动画等功能。使用 RecyclerView,我们需要定义一个 Adapter 来管理数据,以及一个 LayoutManager 来控制布局方式。 以下是 RecyclerView 的使用步骤: 1. 在布局文件中定义 RecyclerView 组件。 2. 定义 RecyclerView 的 Adapter,继承自 RecyclerView.Adapter,并实现三个方法:onCreateViewHolder、onBindViewHolder 和 getItemCount。 3. 定义 RecyclerView 的 LayoutManager,可以使用系统提供的 LinearLayoutManager、GridLayoutManager 或者自定义实现。 4. 在 Activity 或者 Fragment 中获取 RecyclerView 对象,并设置 Adapter 和 LayoutManager。 5. 可选的,可以设置 RecyclerView 的 ItemDecoration 和 ItemAnimator,用于美化界面和实现动画效果。 下面是一份简单的示例代码: 1. 在布局文件中定义 RecyclerView 组件: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 定义 RecyclerView 的 Adapter: ``` public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { holder.textView.setText(mData.get(position)); } @Override public int getItemCount() { return mData.size(); } static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.text_view); } } } ``` 3. 定义 RecyclerView 的 LayoutManager: ``` RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); ``` 4. 在 Activity 或者 Fragment 中获取 RecyclerView 对象,并设置 Adapter 和 LayoutManager: ``` RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(new MyAdapter(data)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值