Recyclerviewl列表多选
开门见山,先上效果图。
列表显示,采用List。内容包括接单类型、选中状态。使用HashMap key、value存取。泛型:List<HashMap<String, Object>>
1、初始化数据。可使用数组。
String[] selectStr = new String[]{"只接接送机", "只接接送站", "只接实时单", "只接预约单"};
for (int i = 0; i < 4; i++) {
HashMap<String, Object> map = new HashMap<>();
map.put("isSelected", true);
map.put("selectType", selectStr[i]);
selectList.add(map);
}
2、使用adapter加载数据。
final HashMap map = selectList.get(position);
holder.tvSelectType.setText(map.get("selectType") + "");
if ((boolean) map.get("isSelected")) {
holder.ivSelect.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.ic_confirm));
holder.tvSelectType.setTextColor(ContextCompat.getColor(mContext, R.color.dark_blue));
} else {
holder.ivSelect.setImageDrawable(ContextCompat.getDrawable(mContext, R.drawable.ic_negative));
holder.tvSelectType.setTextColor(ContextCompat.getColor(mContext, R.color.dark_gray));
}
holder.llSelectItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListener.onItemClick(position);
}
});
注:分别指定选中、未选中图片、字体色。
3、在Activity类中,处理点击事件。
selectAdapter.setOnItemClickListener(new SelectAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
HashMap map = selectList.get(position);
if ((boolean) map.get("isSelected")) {
map.put("isSelected", false);
} else {
map.put("isSelected", true);
}
selectAdapter.notifyDataSetChanged();
}
});
注:点击后,重要点:刷新适配器。
简单实用的多选功能完成了!