1. 程式人生 > >android studio中使用recyclerview小白篇(三)

android studio中使用recyclerview小白篇(三)

col gray sharp lead fin == ret size n)

繼續接著昨天的來,昨天終於弄好了一個例子,但是那個沒有點擊事件, 需要自己添加,參照別人的例子,弄了個比較簡單的,主要是改動myRecycleradatper.java中的部分.

增加如下的接口:

 //增加一個靜態的接口.
    private OnItemClickListener listener;
    public static interface OnItemClickListener {
        void onItemClick(View view , int position);
    }
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }

  

在onBindViewHolder中增加如下的代碼

     if (listener != null) {
            holder.v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onItemClick(v,position);
                }
            });
        }

  

這就好了,是目前能找到的比較簡潔的方法了.

在主界面中直接使用就可以了.如下:

        recycleAdapter.setOnItemClickListener(new myRecycleradatper.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Log.e("constr"," " + position);
            }
        });

  

觀看點擊後log.e的記錄值.

自定義的數據適配器全部代碼如下,供參照,雖然不好,但是能用,我也不知啥意思,以後慢慢理解吧:

public class myRecycleradatper extends RecyclerView.Adapter<myRecycleradatper.MyViewHolder> {
    private List<filelist> mDatas;
    private Context mContext;
    private LayoutInflater inflater;

    //增加一個靜態的接口.
    private OnItemClickListener listener;
    public static interface OnItemClickListener {
        void onItemClick(View view , int position);
    }
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }


    public myRecycleradatper(Context context, List<filelist> datas){
        this. mContext=context;
        this. mDatas=datas;
        inflater=LayoutInflater. from(mContext);
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = inflater.inflate(R.layout.item_view,parent, false);
        MyViewHolder holder= new MyViewHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {
        filelist da=mDatas.get(position);
        if(position%2==0){
            //holder.tv.setBackgroundColor(Color.BLUE);
            holder.v.setBackgroundColor(Color.GRAY);
        }
        if (listener != null) {
            holder.v.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onItemClick(v,position);
                }
            });
        }
        holder.tv.setText(da.getName());
        holder.msg.setText(da.getZt());

    }

    class MyViewHolder extends RecyclerView.ViewHolder{
        TextView tv;
        TextView msg;
        View v;
        public MyViewHolder(View view) {
            super(view);
            tv=(TextView) view.findViewById(R.id.txt_xs);
            msg=(TextView)view.findViewById(R.id.txt_msg);
            v=view;
        }

    }
}

  

android studio中使用recyclerview小白篇(三)