两个class的代码,第一个是主程序的 extends AppCompatActivity 的代码,一个是class是写的是recyclerview的适配器代码。我现在只会在适配器代码中的
onBindViewHolder为每一个itemview中的switch设定监听,但是我想在主程序中对每一个switch实现监听,请问应该怎么办,谢谢
在适配器中写一个通用的switch点击方法,然后在主程序中通过itemclick来监听
--------补充------------------
首先,在你的适配中定义如下的代码,其中RecordItemAdapter改为你的适配器:
//===========================为item添加点击事件=======================================
//第一步:自定义一个回调接口来实现点击
public interface OnItemClickListener{
void onItemClick(View v,int position);
}
//第二步:声明自定义的接口
public RecordItemAdapter.OnItemClickListener mOnItemClickListener;
//第三步:定义方法并暴露给外面的调用者
public void setOnItemClickListener(RecordItemAdapter.OnItemClickListener listener){
this.mOnItemClickListener = listener;
}
再自定义一个viewholder
public class MyRecordViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.btn_mapview)
Button btnMapview;//这里可以改成switch控件
public MyRecordViewHolder(View itemView){
super(itemView);
ButterKnife.bind(this,itemView);
btnMapview.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
最后在主程序中实例化适配器,并写如下代码:
mItemAdapter.setOnItemClickListener(mItemClickListener);
private RecordItemAdapter.OnItemClickListener mItemClickListener = new RecordItemAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
switch (v.getId()){
case R.id.btn_mapview:
//在这里可以进行switch控件的点击事件处理
break;
}
}
};
以上代码是基于RecyclerView的
switch点击事件是setOnCheckedChangeListener