У меня есть пользовательский фрагмент предпочтений, который содержит две пользовательские команды listpreferences. В связи с динамичным характером двух списков, каждый раз, когда мой родительский фрагмент загружается, я обновить эти два фрагмента, создавая новый экземпляр пользовательского 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);
}
все работает отлично от начала до конца, но когда списки получаются достаточно длинными, прокрутка становится проблемой, поскольку всплывающее окно списка не авто-прокрутки к выбранному элементу предпочтения.
Все сообщения в Интернете по этой проблеме предполагают, что вы можете получить базовое listview по id и просто сделать гладкую прокрутку (или подобное), чтобы перейти к соответствующему элементу списка. Однако в моем случае нет идентификатора списка, поэтому я не могу ссылаться на него (по крайней мере, из моих ограниченных знаний). Есть ли способ сделать это?
Спасибо за предложение - список, как представляется, имеют точно такую же функциональность, хотя, к сожалению. Он по-прежнему отображается в верхней части списка и требует прокрутки вниз, чтобы увидеть выбранный элемент. – runfaj
Странно, единственное отличие, которое я вижу в вашем случае, это то, что я подклассифицировал «DialogPreference» вместо «ListPreference», потому что у меня были проблемы с тем, как «ListPreference» обрабатывает списки меток и значений – bwt