GridView после нажатия назад возвращается на первую ячейку

Интерфейс, диалоги, темы, стили, меню
Ответить
Akramjon
Сообщения: 40
Зарегистрирован: 05 окт 2013, 20:26
Контактная информация:

GridView после нажатия назад возвращается на первую ячейку

Сообщение Akramjon » 09 мар 2016, 10:35

Всем привет
В приложении использован GridView
Имеются 58 категорий, всё работает прекрасно
только вот если зайти на любой из категорий например 50 ый
GridView возвращается на первый уровень
и каждый раз чтобы спуститься вниз надо скролит GridView
как можно сделать так чтобы он оставалься на месте после возврата?
например зашел в 45 категорию нажал кнопку назад выходит на 45 ую категорию.
Спасибо большое.

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="namangan.nisd.uz.rusuzbeksozlashgich.MainActivity">

<GridView
        android:id="@+id/gridView"
        android:layout_width="fill_parent"
        android:layout_height="0.0dip"
        android:horizontalSpacing="@dimen/grid_view_horizontal_spacing"
        android:listSelector="@android:color/transparent"
        android:numColumns="@integer/grid_columns"
        android:paddingLeft="@dimen/grid_view_padding_edge"
        android:paddingRight="@dimen/grid_view_padding_edge"
        android:scrollbars="none"
        android:verticalSpacing="@dimen/grid_view_vertical_spacing"
        android:layout_above="@+id/adViewRusAsosiy"
        android:layout_alignParentTop="true" />
    
</RelativeLayout>

Код: Выделить всё

private GridView gridView;
 this.gridView = ((GridView)findViewById(R.id.gridView));
        this.gridView.setNumColumns(3);
        this.gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);

ANdriy123456
Сообщения: 138
Зарегистрирован: 27 июн 2014, 01:41

Re: GridView после нажатия назад возвращается на первую ячей

Сообщение ANdriy123456 » 10 мар 2016, 01:32

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

Аватара пользователя
An-droid
Сообщения: 51
Зарегистрирован: 25 авг 2015, 10:54

Re: GridView после нажатия назад возвращается на первую ячей

Сообщение An-droid » 11 мар 2016, 22:08

У меня есть вот такой лайф-хак. Я думаю для GridView тоже подойдёт.

Код: Выделить всё

//Устанавливайте адаптер таким образом, как указано в коде ниже.
//Таким образом, ListView при установке адаптера сохранит свою текущую позицию скролла. 
//Очень полезно, например, при открытии подробностей и возвращении в список.

Parcelable state = yourListView.onSaveInstanceState();
yourListView.setAdapter(adapter);
yourListView.onRestoreInstanceState(state);
Изображение

Ответить