【问题标题】:How to fix, checkbox not checked using code in custom adapter for a spinner?如何修复,未使用微调器自定义适配器中的代码检查复选框?
【发布时间】: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


    【解决方案1】:

    如果它们被选中,但没有直观地显示出来,你可能需要戳它们。

    View v = getView();
    
    if (v != null)
    {
        v.jumpDrawablesToCurrentState();
    }
    

    【讨论】:

    • 是的,它们已经过检查,但没有直观地查看。谢谢您的帮助。我可以知道在适配器中我们需要在哪里执行上述操作吗?
    • 试过这个但没有帮助
    猜你喜欢
    • 2019-05-27
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2014-05-20
    相关资源
    最近更新 更多