Если вы используете GridView или ListView (и т. Д.) и создаете представления для их заполнения через адаптер getView (pos, convertView, viewGroup) , вы можете столкнуться с путаницей (я однажды это сделал).
Если вы решили повторно использовать параметр convertView, вы должны сбросить все внутри него. Это старый вид, передаваемый вам фреймворком, чтобы сэкономить на раздувании макета. Он почти никогда не ассоциируется с положением , которое было в макете ранее.
class GridAdapter extends BaseAdapter // assigned to your GridView
{
public View getView(int position, View convertView, ViewGroup arg2) {
View view;
if (convertView==null)
{
view = getLayoutInflater().inflate(R.layout.gd_grid_cell, null);
}
else
{
// reusing this view saves inflate cost
// but you really have to restore everything within it to the state you want
view = convertView;
}
return view;
}
// other methods omitted (e.g. getCount, etc)
}
Я думаю, что это представляет собой одну из тех вещей Android, где поначалу немного сложно понять концепцию, пока вы не поймете, что в ней есть существенная оптимизация (должна быть хороша для процессора на небольшом мобильном устройстве)