2013-12-24 3 views
0

У меня есть GridView, который заполняется с 10 изображениями, когда я прокрутите вниз до последнего пункта и изменить данные полностью, таким образом:GridView положение прокрутки

gridAdapter.values.clear(); 
gridAdapter.notifyDataSetChanged(); 

и добавить совершенно новый набор из 10 изображений.

Проблема заключается в том, что по умолчанию gridView прокручивается до самого нижнего элемента, может быть, потому что предыдущее положение прокрутки было таким. Так же, как вы прокручиваете список -> щелкните по элементу -> щелкните назад, а браузер попытается прокрутить до предыдущей позиции прокрутки.

Как я могу показать больше всего товара, а не такого поведения.

+0

Ваша цель иметь бесконечную сетку с 10 элементами в макс. Адаптера и пользователем, способным прокручивать ее, не замечая никакой разницы? – Niko

+0

Нет, я хочу, чтобы gridview оставался на вершине самого элемента, когда я очищаю данные и добавляю новые данные. – user1537779

+0

Вы пробовали scrollTo (0) после установки новых данных? – Niko

ответ

0

Попробуйте это:

int pos = gridview.getFirstVisiblePosition(); 
gridview.smoothScrollToPosition(pos); 

Когда вы возвращаетесь из другой деятельности.

+0

Это вид последнего элемента, а затем прокручивается вверх. Вместо этого как я могу избежать отображения последнего элемента? – user1537779

+0

Вы можете попробовать добавить GlobalLayoutListener в GridView, это ViewTreeObserver, в прослушивателе попытайтесь сделать это или установите позицию на 0. Например: gridView.setPosition (0) (что-то в этом роде). –

0

Когда в нижней части вы можете позвонить:

gridView.setAdapter(null); 
gridView.setAdapter(prevAdapterWithNewItems); 

Однако это не прерывать пользователя скроллинга или Fling эффект.

+0

Я делаю то же самое, он отлично работает, за исключением того, что по умолчанию «GridView» показывает последнюю позицию прокрутки вместо начала сверху (например, listview). – user1537779

+0

Хм, хорошо, мне нужно самому воспроизвести проблему, чтобы найти рабочее решение, позже я приеду на работу позже и отправлю его сюда. – Niko

+0

Вы хотите, чтобы сетка остановилась, когда вы устанавливаете новые элементы (прерывать прокрутку/прокрутку пользователя)? – Niko

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