Cómo funciona el mecanismo de reciclaje de ListView

Así que tengo este problema que tenía antes, y naturalmente pedí ayuda enaquí. La respuesta de Luksprog fue excelente porque no tenía idea de cómo ListView y GridView se optimizaban a sí mismos con vistas de reciclaje. Entonces, con su consejo, pude cambiar la forma en que agregué Vistas a mi GridView. El problema es que ahora tengo algo que no tiene sentido. Este es migetView de miBaseAdapter:

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;
    }

}

El problema es cuando me desplazo, esto sucede, y no en la posición 0 ... Parece que la posición 6 y la posición 8, además de que pone dos en la posición 8. Ahora todavía estoy tratando de entender el uso de ListView y GridView, así que hago No entiendo por qué está sucediendo esto. Una de las razones principales por las que formulo esta pregunta es para ayudar a otras personas que probablemente no conocen la Vista de reciclaje de ListView y GridView, o la forma en que estaartículo Lo pone, mecanismo de ScrapView.

Edición posterior

Agregar un enlace a una charla de Google IO que es básicamente todo lo que necesita para comprender cómo funciona ListView. Enlace fue muerto en uno de los comentarios. Así que user3427079 fue lo suficientemente bueno para actualizar ese enlace.aquí Es de fácil acceso.

Respuestas a la pregunta(3)

Su respuesta a la pregunta