2012-03-30 60 views
1

首我需要顯示在首選項查看列表,所以我創建了自己的類(繼承Preference),然後將其設置是這樣的:嵌入列表視圖到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; 
} 

這工作,但我可以不滾動它(它顯示非常小)。我認爲我的Listview被嵌入到了Preference中(默認情況下它有自己的寬度和高度),但我需要顯示一個完整的列表。

我該如何實現它?謝謝!

+0

首選項屏幕是ListView。你不能成功地在'ListView'中嵌入一個ListView。最有可能的是,您將希望爲您的'PreferenceActivity'創建自己的佈局,其中一個在第一個佈局下有獨立的'ListView',用於分割屏幕。或者,堅持使用標準的'ListPreference'。 – CommonsWare 2012-03-30 20:53:07

回答

1

我解決了我自己的問題,動態添加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(); 

    } 
});