2012-07-26 20 views
1

我的應用程序中有一個首選項頁面。由於沒有Multiple Choice ListPreference(在API級別11之後有一個),我想在首選項頁面放置一個ListView。但是,preferences.xml不允許我插入線性佈局。Android - 在首選項頁面中放置ListView

這裏是我的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 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

我不知道,如果是聰明添加一個ListView偏好窗格內,因爲PreferenceActivity已經使用一個ListView,顯示許多優先。也許你想使用MultiSelectListPreference,首選項允許你做多選。你可以看到一個例子http://blog.350nice.com/wp/archives/240

+0

MultiSelectListPreference是自API級別11. 我認爲在http://blog.350nice.com/wp/archives/240指定的方法不在偏好頁面內。我在偏好頁面中需要它,因爲有兩個偏好頁面不太好。 – sarkolata 2012-07-27 00:20:37