Android:ListPreference隐藏/禁用值

Lio*_*luz 6 android android-preferences

我正在生成一个基于xml(entries和entryValues)的listPreference对话框.

<string-array name="listArray">
    <item>Title (A-Z)</item>
    <item>Title (Z-A)</item>
    <item>Visits (default)</item>
    <item>Date</item>
    <item>Manual</item>
</string-array> 
<string-array name="listValues">
   <item>titleASC</item>
   <item>titleDESC</item>
   <item>visitsSort</item>
   <item>createSort</item>
   <item>manualSort</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

我想基于一些其他参数隐藏/禁用一些条目(例如:手动).

我知道它应该在这个范围内:

Preference sorted = (Preference) findPreference(OPT_SORT);

        sorted.setOnPreferenceClickListener(new OnPreferenceClickListener() {
            public boolean onPreferenceClick(Preference preference) {

                if (params) {
                    What should i put here to hide/disable some of the entries?
                }

                return true;
            }
        });
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

我找到的最佳解决方案是加载一组不同的条目和EntryValues.在Preference类(onCreate):

ListPreference sortBy = (ListPreference) findPreference(OPT_SORT);
        if (isTabletDevice()) {
            sortBy.setEntries(getResources().getStringArray(R.array.HClistArray));
            sortBy.setEntryValues(getResources().getStringArray(R.array.HClistValues));
        }
Run Code Online (Sandbox Code Playgroud)

希望这有助于任何人!:)

Com*_*are 4

AFAIK,ListPreference不支持这一点。您也许能够ListPreference在使用自定义的位置创建自己的子类Adapter,并指示哪些项目已启用和未启用。