Встраивать ListView в настройки в Android - PullRequest
1 голос
/ 30 марта 2012

Мне нужно показать список в представлении настроек, поэтому я создал свой собственный класс (наследование Preference) и затем установил его так:

@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; 
}

Это работает, но я не могупрокрутите его (это показывает действительно крошечный).Я думаю, что мой Listview встроен в Preference (с его собственной шириной и высотой по умолчанию), но мне нужно показать полный список.

Как мне этого добиться?Спасибо!

1 Ответ

1 голос
/ 05 апреля 2012

Я решил собственную проблему, добавив PreferenceScreen динамически вместо встраивания компонента ListView в 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();

    }
});
...