Якщо в адаптері для GridView Ви намагаєтеся повторно використовувати створені дочірні елементи View, то після кожної перемальовування всі ці дочірні елементи будуть міняти свій порядок. Наступний код демонструє цю проблему:
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null){
v = new View();
// ....
}
return v;
}
Щоб позбутися цієї проблеми необхідно не використовувати змінну View (в даному випадку - convertView), передану в метод getView(). Тобто, вищенаведений код повинен мати вигляд:
public View getView(int position, View convertView, ViewGroup parent) {
View v = new View();
// ....
return v;
}
Щоб не пересоздавать всі примірники View при кожному перемальовуванні, як варіант, можна використовувати масив елементів View, який самостійно заповнювати.