7
我有一個自定義preferencefragment,其中包含兩個自定義列表首選項。由於兩個列表的動態性質,我的每一位家長片段被加載時,我通過創建自定義preferencefragment的新實例刷新這兩個片段:滾動到/設置自定義列表首選項的位置
if(themeListFragment != null) {
themeListFragment = new ThemeListFragment();
//init fragment
getFragmentManager().beginTransaction()
.replace(R.id.themeFragmentCont, themeListFragment)
.commit();
}
這完美的作品,並呈現自定義列表的喜好。這兩個名單偏好每個由自定義listpreference定義:
//setup themes list
if(lp == null) {
lp = (ThemeListPreference) findPreference("theme_list");
lp.setOnPreferenceChangeListener(this);
refreshThemes();
}
我定製listpreference幾乎已經創建對話框之前做一些操作,因此它將覆蓋方法:
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
int index = preferences.getInt(getContext().getString(R.string.theme_id),getContext().getResources().getInteger(R.integer.default_theme_id));
System.out.println(index);
ListAdapter listAdapter = new ThemeListAdapter(getContext(),
R.layout.image_list_row, this.getEntries(),
themes, index,
this);
builder.setAdapter(listAdapter, this);
super.onPrepareDialogBuilder(builder);
}
一切正常從開始到結束都很棒,但是當列表變得足夠長時,滾動成爲一個問題,因爲列表彈出不會自動滾動到所選的首選項。
針對此問題的所有網絡帖子均假設您可以通過id獲取基礎列表視圖,只需執行平滑滾動(或類似)即可跳轉到正確的列表項目。然而,在我的情況下,沒有一個列表視圖ID,所以我不能引用它(至少從我有限的知識)。有沒有可能的方法來做到這一點?
感謝您的建議 - 名單似乎有但不幸的完全相同的功能。它仍然在列表頂部呈現,並且需要向下滾動才能看到選定的項目。 – runfaj
奇怪的是,我可以看到你的情況唯一的區別是我分類'DialogPreference'而不是'ListPreference',因爲我有'ListPreference'處理標籤和值列表的方式問題 – bwt