Android中RecyclerView的使用解析介绍(一)

1.布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <android.support.v7.widget.RecyclerView
        android:id="@+id/id_recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

2.item布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <TextView
        android:id="@+id/id_num"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="1" />
</FrameLayout>

3.设置布局管理器
先看LinearLayoutManager,该类有两个构造函数。

LinearLayoutManager(context)
LinearLayoutManager(context, orientation, reverseLayout)

第一个参数是Context,第二个参数是布局方向,其值可以取

LinearLayoutManager.HORIZONTAL 水平
LinearLayoutManager.VERTICAL 垂直

第三个参数是是否逆向布局如果设置为true,则反向开始布局,现在我们将布局设置为水平,并逆向布局,使用下面的代码

LayoutManager layout = new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,true);

用过了线性布局,我们再换一个布局,GridLayoutManager网格布局,设置2列,默认垂直布局

GridLayoutManager layout = new GridLayoutManager(this,2);

跟线性布局一样,网格布局还有一个构造函数,其意义同线性布局,这里,我们不适用逆向布局,设置2列,垂直

LayoutManager layout=new GridLayoutManager(this, 2, GridLayoutManager.VERTICAL, false);

还有一个布局管理器就是流式布局管理器,该类只有一个构造函数,一个是列数或者行数,另一个是布局方向,依然看代码

LayoutManager layout=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);

设置布局样式方法

layout.setOrientation(LinearLayoutManager.HORIZONTAL);

4.adapter中的代码

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

    private MyAdapter.MyItemClickListener mItemClickListener;
    private LayoutInflater inflater;
    private List<String> list;
    private Context context;
    public MyAdapter(Context context, List<String> list){
        this.inflater = LayoutInflater.from(context);
        this.list = list;
        this.context = context;
    }
    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.item_my_yu_yue, parent, false);
        MyAdapter.ViewHolder viewHolder = new MyAdapter.ViewHolder(view, mItemClickListener);
        return viewHolder;
    }

    /**
     * 像item中添加数据
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        holder.tv_name.setText(list.get(position));
    }

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

    /**
     * 获取textView的id和设置点击事件
     */
    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        public MyAdapter.MyItemClickListener myItemClickListener;
        private TextView tv_name;
        public ViewHolder(View itemView, MyAdapter.MyItemClickListener myItemClickListener) {
            super(itemView);
            this.myItemClickListener = myItemClickListener;
            itemView.setOnClickListener(this);
            tv_name = (TextView) itemView.findViewById(R.id.tv_name);
        }

        @Override
        public void onClick(View v) {
            if (myItemClickListener != null) {
                myItemClickListener.onItemClick(v, getPosition());
            }
        }
    }

    public interface MyItemClickListener {
        void onItemClick(View view, int position);
    }

    public void setItemClickListener(MyAdapter.MyItemClickListener myItemClickListener) {
        this.mItemClickListener = myItemClickListener;
    }
}

5.activity中调用代码

扫描二维码关注公众号,回复: 5185184 查看本文章
void initShow() {
        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        //设置适配器
        myAdapter = new MyAdapter(getContext(), list);
        mRecyclerView.setAdapter(myAdapter);
        //监听点击事件
        myAdapter.setItemClickListener(new MyAdapter.MyItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {

            }
        });
    }

Android中RecyclerView与Scrollview组合使用(二)
Android中RecyclerView侧拉滑动删除功能实现

猜你喜欢

转载自blog.csdn.net/weixin_34023863/article/details/87029114