【问题标题】:Android - CheckBox gets unchecked on keyboard show up?Android - CheckBox 在键盘显示时未选中?
【发布时间】:2015-09-08 01:11:03
【问题描述】:

对话框的内容是ListView,这是适配器:

public class MultiSelectionSpinnerAdapter extends BaseAdapter {

    private Context ctx;
    private ArrayList<MultiSelectionItem> items;
    private LayoutInflater layoutInflater;

    public MultiSelectionSpinnerAdapter(Context ctx, ArrayList<MultiSelectionItem> items) {
        this.ctx = ctx;
        this.items = items;
        this.layoutInflater = LayoutInflater.from(ctx);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final MultiSelectionItem item = items.get(position);

        CheckBox checkBox;
        if (item.isEditable()) {
            convertView = layoutInflater.inflate(R.layout.editable_checkbox, parent, false);
            checkBox = (CheckBox) convertView.findViewById(R.id.editableCheckbox);

            EditText editText = (EditText) convertView.findViewById(R.id.editableEditText);
            editText.setText(item.getEditableValue());
            editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {}

                @Override
                public void afterTextChanged(Editable s) {
                    item.setEditableValue(s.toString());
                }
            });
        } else {
            convertView = layoutInflater.inflate(R.layout.multi_selection_checkbox, parent, false);
            checkBox = (CheckBox) convertView;
        }
        checkBox.setText(item.getLabel());
        checkBox.setChecked(item.isSelected());
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                item.setIsSelected(isChecked);
            }
        });

        return convertView;
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return items.get(position).getId();
    }
}

【问题讨论】:

  • EditText 上方是什么视图?列表视图?
  • 很明显,适配器没有保存状态......
  • 发布您的适配器代码。
  • 确实我没有在适配器中保存状态,我该怎么做?
  • 我该怎么做?我会从谷歌搜索开始,因为类似的问题被问了无数次

标签: android


【解决方案1】:

您可以尝试here 中提出的解决方案。 基本上设置了SoftInputMode;像这样: dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

【讨论】:

    【解决方案2】:

    我通过添加来解决这个问题

    android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
    

    到 mainfest 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多