RecycleView的使用以及一些注意点

来源:互联网 发布:近几年大学生就业数据 编辑:程序博客网 时间:2024/05/22 16:32

作为一个刚入行的新手决定从今天开始每天总结一点东西。

RecycleView

优点:内部集成了ViewHolder回收机制。

缺点:没有条目点击事件的功能,如果添加需要自己在adapter中自定义点击事件的接口;

今天就对recycleview的基本使用方法和点击事件的添加做点总结,

首先:基本使用方法:

private void initView() {    mRecyclerview = (RecyclerView) findViewById(R.id.list);    //第一步设置布局管理器;    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);    mRecyclerview.setLayoutManager(linearLayoutManager);    //第二步设置横向与竖向;    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);    //第三步设置Adapter    RecyclerAdapter adapter = new RecyclerAdapter(this, mList);    mRecyclerview.setAdapter(adapter);}

关键点在于adapter内容;

package com.example.selfviewdemo;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.SelfHolder> {    public static final String TAG = RecyclerAdapter.class.getSimpleName();    private List<String> mData;    private Context mContext;    private final LayoutInflater mInflater;    public RecyclerAdapter(Context context, List<String> data) {        mData = data;        mContext = context;
        //第一步:得到打气筒;        mInflater = LayoutInflater.from(context);    }    //创建 viewholder    @Override    public SelfHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //将布局加载到view中        View view = mInflater.inflate(R.layout.item, parent, false);        return new SelfHolder(view);    }    //覆盖屏幕中的item    @Override    public void onBindViewHolder(final SelfHolder holder, int position) {        holder.mTextView.setText(mData.get(position));    }    @Override    public int getItemCount() {        return mData.size();    }    class SelfHolder extends RecyclerView.ViewHolder {        TextView mTextView;        public SelfHolder(View itemView) {            super(itemView);            mTextView = (TextView) itemView.findViewById(R.id.item_text);        }    }}
最后点击事件的添加:
private void initView() {    mRecyclerview = (RecyclerView) findViewById(R.id.list);    //第一步设置布局管理器;    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);    mRecyclerview.setLayoutManager(linearLayoutManager);    //第二步设置横向与竖向;    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);    //第三步设置Adapter    RecyclerAdapter adapter = new RecyclerAdapter(this, mList);    mRecyclerview.setAdapter(adapter);    //第四步自定义点击事件(这里的点击事件是自己在adapter中自定义的)    adapter.setOnItemClickLitener(new RecyclerAdapter.OnItemClickLitener() {        @Override        public void onItemClick(View view, int position) {            Log.d(TAG, "onItemClick: enter a");            Toast.makeText(getApplicationContext(), "被点击了" + position, Toast.LENGTH_SHORT).show();        }        @Override        public void onItemLongClick(View view, int position) {        }    });}

Adapter中要自定义点击事件,
 @Override    public void onBindViewHolder(final SelfHolder holder, int position) {        holder.mTextView.setText(mData.get(position));                if (mOnItemClickLitener != null) {            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Log.d(TAG, "onClick: enter b");                    int pos = holder.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder.itemView, pos);                }            });            holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {                @Override                public boolean onLongClick(View v) {                    int pos = holder.getLayoutPosition();                    mOnItemClickLitener.onItemLongClick(holder.itemView, pos);                    return false;                }            });        }    }    public interface OnItemClickLitener {        void onItemClick(View view, int position);        void onItemLongClick(View view, int position);    }    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {        Log.d(TAG, "setOnItemClickLitener: c");        this.mOnItemClickLitener = mOnItemClickLitener;    }




             

0 0