2013-07-12 2 views
0

У меня есть вид списка в приложении Android (JB), где щелчок по строке заменяет вид списка другим видом.Android ListView сбрасывает положение прокрутки после первого прокрутки

Нажатие отдельной кнопки добавляет представление списка к действию (идея заключается в том, что родительский контейнер переключается между представлением списка и содержимым одной строки).

Проблема возникает, когда я просматриваю строку рядом с нижним и нажимаю ее (чтобы заменить вид списка). После нажатия другой кнопки, чтобы снова отобразить список, все выглядит нормально (включая состояния строк и положение прокрутки). Но как только я попытаюсь прокрутить снова, он сбрасывает список в верхнем. Прокрутка после этого работает нормально.

Источник данных для просмотра списка не изменяется вообще. Странно, если я изменил ориентацию планшета, то прокрутка в первый раз не сбрасывает вид списка сверху.

Я предполагаю, что это имеет какое-то отношение к удалению представления, а затем добавляет обратно тот же вид (который выполняется путем вызова removeAllViews и addView для родителя).

ответ

0

Я не уверен, но я думаю, что когда вы вызываете removeAllViews, по какой-то причине он не может сохранить предыдущее состояние. Я не уверен, что если это лучший способ решить проблему, но вы можете сохранить свою позицию прокрутки, прежде чем удалить ее, и после добавления своих просмотров снова вы можете установить ее.

Что-то вроде этого:

int posX = listView.getScrollX(); 
//remove your view 

и после того, как:

//add your views 
listView.setScrollX(posX); 
+0

Спасибо, это то, что вызвало проблему. Вот правильный способ сохранения состояния прокрутки: http://stackoverflow.com/a/3035521/1408673 – FUR10N

Смежные вопросы