Java 禁用android中multiselectListPreference中的复选框单击

Java 禁用android中multiselectListPreference中的复选框单击,java,android,Java,Android,我正在应用程序中使用扩展了DialogPreference的mutliselectlistpreference。我还没有使用任何适配器来构建UI。请找到下面的图片 这里的问题是,我能够将选中的复选框保持为周一和周二,但我无法使项目只读,用户将无法取消选中项目。我想把这两件东西都变成灰色。你能帮我解决这个问题吗 @Override protected void onPrepareDialogBuilder(Builder builder) { super.onPrepar

我正在应用程序中使用扩展了
DialogPreference
的mutliselectlistpreference。我还没有使用任何适配器来构建UI。请找到下面的图片

这里的问题是,我能够将选中的
复选框保持为周一和周二,但我无法使项目只读,用户将无法取消选中项目。我想把这两件东西都变成灰色。你能帮我解决这个问题吗

 @Override
    protected void onPrepareDialogBuilder(Builder builder) {
        super.onPrepareDialogBuilder(builder);

        if (entries == null || entryValues == null) {
            throw new IllegalStateException(
                    "MultiSelectListPreference requires an entries array and an entryValues array.");
        }

        checked = new boolean[entryValues.length];
        List<CharSequence> entryValuesList = Arrays.asList(entryValues);
        List<CharSequence> entriesList = Arrays.asList(entries);
        for (int i = 0; i < entryValues.length; ++i) {
            if("Monday".equals(entriesList.get(i).toString())){
                checked[i]=true;
            }
        }
        if (values != null) {
            for (String value : values) {
                int index = entryValuesList.indexOf(value);
                if (index != -1) {
                    checked[index] = true;
                }
            }
        }


        builder.setMultiChoiceItems(entries, checked,
                new OnMultiChoiceClickListener() {
                    public void onClick(DialogInterface dialog, int which,
                            boolean isChecked) {
                        checked[which] = isChecked;
                    }
                });

    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);

        if (positiveResult && entryValues != null) {
            for (int i = 0; i < entryValues.length; ++i) {

                if (checked[i]) {

                    newValues.add(entryValues[i].toString());

                }
            }

            if (callChangeListener(newValues)) {
                setValues(newValues);
            }
        }
    }

    @Override
    protected Object onGetDefaultValue(TypedArray a, int index) {
        CharSequence[] array = a.getTextArray(index);

        Set<String> set = new HashSet<String>();

        for (CharSequence item : array) {
            set.add(item.toString());
        }

        return set;
    }

    @Override
    protected void onSetInitialValue(boolean restorePersistedValue,
            Object defaultValue) {
        @SuppressWarnings("unchecked")
        Set<String> defaultValues = (Set<String>) defaultValue;

        setValues((restorePersistedValue ? getPersistedStringSet(values)
                : defaultValues));
    }

    private Set<String> getPersistedStringSet(Set<String> defaultReturnValue) {
        String key = getKey();
        //String value = getSharedPreferences().getString("4", "Generic");
        return getSharedPreferences().getStringSet(key, defaultReturnValue);
    }

    private boolean persistStringSet(Set<String> values) {
        if (shouldPersist()) {
            // Shouldn't store null
            if (values == getPersistedStringSet(null)) {

                return true;
            }
        }

        SharedPreferences.Editor editor = getEditor();
        editor.putStringSet(getKey(), values);
        editor.apply();
        return true;
    }

    @Override
    protected Parcelable onSaveInstanceState() {
        if (isPersistent()) {
            return super.onSaveInstanceState();
        } else {
            throw new IllegalStateException("Must always be persistent");
        }
    }
@覆盖
受保护的无效onPrepareDialogBuilder(生成器){
super.onPrepareDialogBuilder(建造商);
if(条目==null | |条目值==null){
抛出新的非法状态异常(
“MultiSelectListPreference需要entries数组和entryValues数组。”);
}
选中=新布尔值[entryValues.length];
List entryValuesList=Arrays.asList(entryValues);
List entriesList=Arrays.asList(条目);
对于(int i=0;i
您可以使用它们

checkBox.setEnabled(true); // enable checkbox

checkBox.setEnabled(false); // disable checkbox
您也可以在选中复选框后使用以下代码禁用它们:

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){

    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {                   
      if (isChecked){
          checkBox.setEnabled(false); // disable checkbox 
      }
    }    
});

您好,谢谢您的回复,但我正在使用您好,谢谢您的回复,但我正在使用私人布尔检查[];选中=新布尔值[entryValues.length];List entryValuesList=Arrays.asList(entryValues);List entriesList=Arrays.asList(条目);对于(int i=0;ichecked=new boolean[entryValues.length];List entryValuesList=Arrays.asList(entryValues);List entriesList=Arrays.asList(条目);对于(int i=0;i