1

我的应用程序中有一个首选项页面。由于没有多项选择 ListPreference(API 级别 11 之后有一个),我想在首选项页面放置一个 ListView。但preferences.xml 不允许我插入线性布局。

这是我的preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory
                android:title="Auto Refresh Settings">
                <CheckBoxPreference
                        android:title="Auto Refresh"
                        android:defaultValue="false"
                        android:summary="Enable / Disable Auto Refresh"
                        android:key="checkboxPref" />
                <ListPreference
                        android:title="Auto Refresh Frequency"
                        android:summary="Select the frequency of Auto Refresh"
                        android:key="listPref"
                        android:defaultValue="20"
                        android:entries="@array/listArray"
                        android:entryValues="@array/listValues" />
        </PreferenceCategory>

        </PreferenceScreen>

这是它的外观:

preferences.xml 图形布局

我想要什么

我想要的是

最后是我的 Settings.java(首选项):

package com.sarkolata.coding;


import android.content.Context;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
import android.widget.Toast;
public class Settings extends PreferenceActivity
{


     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
          super.onCreate(savedInstanceState);
          addPreferencesFromResource(R.xml.preferences);


          final Preference ListPref = (Preference) findPreference("listPref");
          final Preference CheckPref = (Preference) findPreference("checkboxPref");


          if(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getBoolean("checkboxPref", false)) {
              ListPref.setEnabled(false);
          }

          ListPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            public boolean onPreferenceChange(Preference preference, Object newValue) {

                Main.update_tick = Integer.parseInt(newValue.toString()) * 1000;

                return true;
            }
        });



          CheckPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

            public boolean onPreferenceChange(Preference preference, Object newValue) {

                if(newValue.toString() == "true")
                {
                    ListPref.setEnabled(false);
                } else {
                    ListPref.setEnabled(true);
                }

                if(newValue.toString() == "true") {

                Main.refreshAllServers(Main.context, Main.bcontext,"start");

                } else {

                    Main.refreshAllServers(Main.context, Main.bcontext,"stop");

                }

                return true;
            }
        });

     }



}
4

1 回答 1

1

我不知道在首选项窗格中添加 ListView 是否明智,因为 PreferenceActivity 已经使用 ListView 来显示许多首选项。也许您想使用MultiSelectListPreference,允许您进行多项选择的首选项。您可以在http://blog.350nice.com/wp/archives/240看到一个示例

于 2012-07-27T00:14:51.310 回答