android - 将 Listview 嵌入到 Android 的首选项中

标签 android android-listview android-preferences

我需要在 Preferences View 中显示一个列表,所以我创建了自己的类(继承 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 嵌入到首选项中(默认情况下有自己的宽度和高度),但我需要显示一个完整的列表。

我怎样才能实现它?谢谢!

最佳答案

我通过动态添加 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();

    }
});

关于android - 将 Listview 嵌入到 Android 的首选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9947539/

相关文章:

android - 使用 Opencv 从 Android 中的 CameraGLSurfaceView 拍照

java - 如何将 TextView 准确放置在用户在 Eclipse for Android 中长按的位置

android - 屏幕旋转后 ListFragment getListView() 返回 null

android - 如何在 Android 首选项 View 上设置内容描述

android - 使用共享首选项保存微调器所选项目的值

java - 如何从正在运行的服务获取数据

android - Google Play 图书中的翻页动画

android - Android中的这个组件是什么?

android - 如何在 BaseAdapter 中使用 getFilter() 过滤 ListView

android - 如何将复制的文本传递给 Android 中的其他 Activity