【发布时间】:2019-06-10 13:11:08
【问题描述】:
我正在使用自定义适配器设置带有“文本和复选框”的自定义微调器。我如何设置检查用户已经选择的一些复选框?在单击复选框值时正确显示。
我正在从模型类中设置选中的复选框,但它没有被选中。它是真的,并且对象的模型类只有值“真”。我也使用“setSelected”和“setChecked”进行了检查,但两者都给出了相同的输出。
public View getCustomView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
LayoutInflater layoutInflator = LayoutInflater.from(thisActivity);
convertView = layoutInflator.inflate(R.layout.spinner_dropdown_with_checkbox, null);
holder = new ViewHolder();
holder.mTextView = (TextView) convertView.findViewById(R.id.text);
holder.mCheckBox = (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.mTextView.setText(listState.get(position).getTitle());
// To check weather checked event fire from getview() or user input
isFromView = true;
//holder.mCheckBox.setChecked(listState.get(position).isSelected());
isFromView = false;
Logger.infoLog("adapter vehicleMovementSubEdit= =>" + vehicleMovementSubEdit);
Logger.infoLog("enteredLaneIdList string ==>" + selectedReasonsList.toString());
holder.mCheckBox.setVisibility(View.VISIBLE);
holder.mCheckBox.setTag(position);
// holder.mCheckBox.setChecked(listState.get(position).getChecked());
Logger.infoLog("listState.get(position).getId() ==>" + listState.get(position).getId());
Logger.infoLog("selectedReasonsList.contains(listState.get(position).getId()) ==>" + selectedReasonsList.contains(listState.get(position).getId()));
if (selectedReasonsList.contains(listState.get(position).getId())) {
listState.get(position).setSelected(true);
Logger.infoLog("condition true ==>");
if (listState.get(position).getChecked()) {
Logger.infoLog("double condition true ==>");
holder.mCheckBox.setChecked(listState.get(position).isSelected());
}
}else{
Logger.infoLog("condition false ==>");
}
}
【问题讨论】:
标签: java android adapter android-recyclerview custom-adapter