RecycleView的使用

public class ResAdapter extends RecyclerView.Adapter<ResAdapter.MyHolder> {

    private ArrayList<TopBean> list;
    private Context context;

    public ResAdapter(ArrayList<TopBean> list, Context context) {
        this.list = list;
        this.context = context;
    }
   private OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }


    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {//第一步执行的方法
        View view=View.inflate(context, R.layout.offline_item,null);
        MyHolder holder=new MyHolder(view);
        //设置条目点击事件
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onItemClickListener.onItemClickListener((Integer) view.getTag(),view);//向接口传递数据
            }
        });

        return holder;
    }

    @Override
    public void onBindViewHolder(MyHolder holder, int position) {第三步,给控件赋值
        TopBean top=list.get(position);

        holder.top.setText(top.name);
        if(top.state){
            holder.off_cb.setChecked(true);
        }else{
            holder.off_cb.setChecked(false);
        }

        holder.itemView.setTag(position);//通过得到itemview的Tag来进行方法间的传值

    }

    @Override
    public int getItemCount() {
        return list.size();
    }
//第二步。添加控件
    class MyHolder extends RecyclerView.ViewHolder{//自定义一个viewholder继承父类的viewholder来使用,更方便

        private TextView top;
        private CheckBox off_cb;
        public MyHolder(View itemView) {
            super(itemView);
            top=itemView.findViewById(R.id.off_top);
            off_cb=itemView.findViewById(R.id.off_cb);
        }
    }

//因为recycle没有条目点击事件,所有声明一个借口,用于检测条目的点击事件
    public interface  OnItemClickListener{
        void onItemClickListener(int pos, View view);
    }


}
 
 

//主方法里面调用的方法
  private void initdata() {

        list = new ArrayList<>();
        list.add(new TopBean("1", "新闻", true));
        list.add(new TopBean("2", "娱乐", true));
        list.add(new TopBean("3", "军事", true));
        list.add(new TopBean("4", "北京", true));


        ResAdapter ada = new ResAdapter(list, OffLine_loadActivity.this);
        lv.setLayoutManager(new LinearLayoutManager(this));
        lv.setAdapter(ada);
        ada.setOnItemClickListener(new ResAdapter.OnItemClickListener() {
            @Override
            public void onItemClickListener(int pos, View view) {
                CheckBox off_cb=view.findViewById(R.id.off_cb);
                TopBean top=list.get(pos);

                if (off_cb.isChecked()) {
                    off_cb.setChecked(false);
                    top.state = false;
                } else {
                    off_cb.setChecked(true);
                    top.state = true;
                }
                list.set(pos,top);
            }
        });
    }


猜你喜欢

转载自blog.csdn.net/zqj861791241/article/details/77851175