Загрузка сетки Android в обратном порядке

Всякий раз, когда я меняю ориентацию телефона, я вижу, что порядок элементов в режиме сетки меняется на противоположные, т.е. то, что было на первой позиции, теперь заканчивается и т. Д.

Как я могу избавиться от этой проблемы? На основе щелкнутой позиции я вызываю различные действия. Но поскольку порядок меняется, при изменении ориентации экрана вызываются неправильные действия.

Я добавил android:configChanges="orientation|keyboardHidden" в моем файле манифеста.

Любая помощь приветствуется.

Класс адаптера:

 class ImageAdapter extends BaseAdapter { Context mContext; private String[] mHome_icon_text = { "A", "B", "C", "D", "E","F" }; private Integer[] mHome_icon_image = { R.drawable.icon, R.drawable.icon, R.drawable.icon, R.drawable.icon, R.drawable.icon, R.drawable.icon, }; public ImageAdapter(Context c) { mContext = c; } @Override public int getCount() { // TODO Auto-generated method stub return mHome_icon_text.length; } @Override public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View v; if (convertView == null) { LayoutInflater li = getLayoutInflater(); v = li.inflate(R.layout.home_grid_view_item, null); TextView tv = (TextView) v.findViewById(R.id.home_icon_text); tv.setText(mHome_icon_text[position]); ImageView iv = (ImageView) v.findViewById(R.id.home_icon_image); iv.setImageResource(mHome_icon_image[position]); } else { v = convertView; } return v; } } 

В основном классе:

 grid_main.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Intent i; switch (position) { case 0: // start A i = new Intent(Home.this, com.da.A.class); startActivity(i); break; case 3: //Cactivity i = new Intent(Home.this, com.da.C.class); startActivity(i); break; default: Toast .makeText(Home.this, "" + position, Toast.LENGTH_SHORT).show(); } } }); 

То, что v = convertView выглядит подозрительно. Я думаю, вам нужно обновить представление с требуемым изображением и текстом для этой позиции. (В противном случае вы просто повторно используете кешированный вид, который вполне может быть подан вам в неправильном порядке, когда сетка будет перестроена.)

1) В качестве теста попробуйте принять if (convertView == null) { ветвь, даже если она не является нулевой и посмотреть, исправляет ли она это. (При прокрутке или повороте это излишне раздувает новые виды, поэтому не оставляйте их так.)

2) Если это исправить, вы можете правильно переработать ранее завышенный convertView , найдя в нем свой R.id.home_icon_text и обновив его для текущей position в convertView != null .

Intereting Posts
Тип ввода html = число не позволяет десятичные точки на определенных дроидах Android – вход в Facebook вызывает ошибку onResume только в первый раз Как обновить импортированные модули с модификацией кода из проекта их внешней библиотеки в Gradle / Android Studio Фрагмент onSaveInstanceState () никогда не вызывается ListView с ArrayAdapter и ViewHolder добавляет значки к неправильному элементу Ошибка сборки Android в Crosswalk Конкретный Android-редактор EditText Устройства Android обтекают текст до ширины экрана Невозможно подключиться через WiFi, но возможно через мобильные данные Выравнивание центра в Android In-app billing андроидная аутентификация возврата требуется при попытке подписаться на продукт Эмулятор для вкладки galaxy galaxy 10.1 Couchbase lite на Android – общая архитектура? Android: обновление виджета при доступности сетевого подключения Тип mime для вывода аудиозаписей устанавливается как видео