2012-03-30 12 views
1

Ich brauche eine Liste in den Einstellungen zu zeigen, ansehen, so habe ich meine eigene Klasse (erben von Preference) und es dann wie folgt festgelegt:einbetten Listenansicht in Einstellungen in Android

@Override 
protected View onCreateView(ViewGroup parent){ 

    cards = new ArrayList<String>(); 

    // Test 
    cards.add("4859-2368957415"); 
    cards.add("4859-5987412598"); 

    LinearLayout layout = new LinearLayout(getContext()); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    list = new ListView(getContext()); 
    list.setLayoutParams(params); 
    layout.addView(list); 
    adapter = new ArrayAdapter<String>(getContext(), 
      android.R.layout.simple_list_item_1, cards); 
    list.setAdapter(adapter); 
    return layout; 
} 

Dies funktioniert, aber ich kann Scroll es nicht (es zeigt wirklich winzig). Ich denke, dass mein Listview in eine Voreinstellung eingebettet ist (standardmäßig mit eigener Breite und Höhe), aber ich muss eine vollständige Liste anzeigen.

Wie kann ich es erreichen? Vielen Dank!

+0

Ein Einstellungsbildschirm ist ein 'ListView'. Sie können eine 'ListView' in einer' ListView' nicht erfolgreich einbetten. Wahrscheinlich werden Sie ein eigenes Layout für Ihre 'PreferenceActivity' erstellen wollen, eines, das Ihr eigenes 'ListView' unter dem ersten hat und den Bildschirm aufteilt. Oder halten Sie sich an den Standard "ListPreference". – CommonsWare

Antwort

1

Ich löste mein eigenes Problem PreferenceScreen dynamisch hinzufügen anstelle einer ListView Komponente in eine Preference.

findPreference("addmyaccount").setOnPreferenceClickListener(new OnPreferenceClickListener() { 
    @Override 
    public boolean onPreferenceClick(Preference preference) { 

     SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE); 
     SharedPreferences.Editor editor = settings.edit(); 

     // Get preference category and add a custom preference (simulating a ListView) 
     PreferenceCategory targetCategory = (PreferenceCategory)findPreference("myaccounts"); 
     final Preference account = new Preference(Settings.this); 

     account.setKey("mykey"); 

     account.setTitle("Custom Preference"); 

     targetCategory.addPreference(account); 
     editor.putString("mykey", "Custom Preference"); 
     editor.commit(); 

    } 
}); 
Verwandte Themen