private List<SHMessage> mSelectList = new ArrayList<>();
private Map<String,Boolean> mSelectMap = new HashMap<>();
private int multiSelectVisibility = View.GONE;
public void setMultiSelect(boolean open){
multiSelectVisibility = open ? View.VISIBLE : View.GONE;
if(open){
mSelectList.clear();
mSelectMap.clear();
}
}
private void setCheckBox(BaseViewHolder helper, SHMessage item){
CheckBox checkBox = helper.getView(R.id.cb_chat);
if(checkBox == null){
return;
}
ConstraintLayout constraintLayout = helper.getView(R.id.cl_item_chat);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.setVisibility(R.id.cb_chat, multiSelectVisibility);
constraintSet.applyTo(constraintLayout);
// 由于复用,必须先解除OnCheckedChangeListener,再设置选中状态
checkBox.setOnCheckedChangeListener(null);
Boolean isCheck = mSelectMap.get(item.getLogId());
if(isCheck == null){
isCheck = false;
}
checkBox.setChecked(isCheck);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 此处不要 以 position作为key,下拉加载更多时,position会变动
mSelectMap.put(item.getLogId(), isChecked);
/* 将 CheckBox 选中的 item 按选择顺序添加到 List 里 */
if (isChecked) {
mSelectList.add(item);
} else {
mSelectList.remove(item);
}
}
});
}
Android RecyclerView 使用CheckBox处理勾选状态
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...