Как работает механизм утилизации ListView

Так что у меня есть эта проблема, которую я имел раньше, и, естественно, я попросил помочьВот, Ответ Luksprog был великолепен, потому что я понятия не имел, как ListView и GridView оптимизировали себя с помощью повторного использования Views. Так что с его советом я смог изменить способ добавления Views в мой GridView. Проблема сейчас в том, что у меня что-то не имеет смысла. Это моеgetView от моегоBaseAdapter:

public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            convertView = inflater.inflate(R.layout.day_view_item, parent, false);
        }
        Log.d("DayViewActivity", "Position is: "+position);
        ((TextView)convertView.findViewById(R.id.day_hour_side)).setText(array[position]);
        LinearLayout layout = (LinearLayout)convertView.findViewById(R.id.day_event_layout);

        //layout.addView(new EventFrame(parent.getContext()));

        TextView create = new TextView(DayViewActivity.this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 62, getResources().getDisplayMetrics()), 1.0f);
        params.topMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        params.bottomMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
        create.setLayoutParams(params);
        create.setBackgroundColor(Color.BLUE);
        create.setText("Test"); 
        //the following is my original LinearLayout.LayoutParams for correctly setting the TextView Height
        //new LinearLayout.LayoutParams(0, (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()), 1.0f)   
        if(position == 0) {
            Log.d("DayViewActivity", "This should only be running when position is 0. The position is: "+position);
            layout.addView(create);
        }

        return convertView;
    }

}

Проблема в том, что когда я прокручиваю, это происходит, а не в позиции 0 ... Похоже на позицию 6 и позицию 8, плюс это ставит два в позицию 8. Теперь я все еще пытаюсь освоить использование ListView и GridView, поэтому я делаю не понимаю, почему это происходит. Одна из основных причин, по которой я задаю этот вопрос, состоит в том, чтобы помочь другим людям, которые, вероятно, не знают о представлении ListView и GridView по переработке, или о том, какстатья ставит его, механизм ScrapView.

enter image description here

Later Edit

Добавление ссылки на Google IO talk - это практически все, что вам нужно, чтобы понять, как работает ListView. Ссылка была мертвой в одном из комментариев. Так что user3427079 был достаточно хорош, чтобы обновить эту ссылку.Вот это для легкого доступа.

Ответы на вопрос(3)

Ваш ответ на вопрос