2012-03-30 46 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(); 

    } 
});