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);
}
});
}