Android - 在首选项页面中放置ListView

时间:2012-07-26 23:25:30

标签: android listview preferences

我的应用程序中有一个首选项页面。由于没有Multiple Choice ListPreference(在Level Level 11之后有一个)我想在List页面放置一个ListView。但是preferences.xml不允许我插入线性布局。

这是我的偏好.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 graphical layout

我想要什么

whatiwant

最后我的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;
            }
        });

     }



}

1 个答案:

答案 0 :(得分:1)

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

查看示例