/**这个是我写的设置*/
private void setAllChecked(boolean isChecked){
for (int i = 0 ; i<recyclerView.getChildCount(); i++){
LinearLayout linearLayout = (LinearLayout)recyclerView.getChildAt(i);
CheckBox checkBox = linearLayout.findViewById(R.id.list_checkBox);
checkBox.setChecked(isChecked);
//Log.d(TAG,"选中--"+checkBox.isChecked() + "----"+ commonAdapter.getItemId(i) + "----" +recyclerView.getChildCount());
}
}
这么写是只能获设置当前可见的表项,其他的都设置不了
你用一个属性表明状态,在adapter中设置状态,通过notifyDataSetChanged及相关方法刷新状态
你要知道自己修改的是数据,view是做展示用的。在bind数据的时候根据数据状态设置即可。
@Override
protected void bind(@NotNull ViewHolder holder, ListData listData, int position)
CheckBox checkBox = holder.getView(R.id.list_checkBox);
checkBox.setChecked(listData.isChecked());
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
listData.setChecked(isChecked);
}
});
}
现在在bind刷新回调这么写就行了