¿Por qué los elementos cambian de orden al desplazarse en Android GridView?

Tengo un GridView en Android que lo lleno con datos recuperados de un recurso xml.
Por ejemplo, tengo 15 elementos en el GridView que se colocan en orden. La altura total excede la altura de la pantalla, así que tengo que desplazarme para ver el resto de los elementos.
El problema es que cuando me desplazo hacia atrás, el orden de las filas invisibles ha cambiado. Es un comportamiento misterioso, ya que a veces los elementos intercambian filas entre sí. Aquí está migetView método:

public class ImageAdapter extends BaseAdapter {
        public ImageAdapter(Context c, NodeList cuu) {
                cu = cuu;
        }
        public int getCount() {
                Log.d("Node Count",cu.getLength()+"");
                return cu.getLength();
        }
        public Object getItem(int position) {
                return position;
        }
        public long getItemId(int position) {
                return position;
        }
        public View getView(int position, View convertView, ViewGroup parent) {
                View myView = convertView;
                if (convertView == null) {
                    Node nd = cu.item(position);
                    Log.d("nodes","Pos: "+(position)+" Name: "+nd.getNodeName()+" Title: "+nd.getAttributes().getNamedItem("title").getTextContent());
                    int catID = Integer.parseInt(nd.getAttributes().getNamedItem("id").getTextContent());
                    LayoutInflater li = getLayoutInflater();
                    myView = li.inflate(R.layout.grid_item, null);
                   ImageView imageView = (ImageView) myView.findViewById(R.id.grid_item_image);
                   myView.setLayoutParams(new GridView.LayoutParams(70, 100));
                   id.download(nd.getAttributes().getNamedItem("icon").getTextContent(),imageView);
                   TextView textView = (TextView) myView.findViewById(R.id.grid_item_text);
                   textView.setText(nd.getAttributes().getNamedItem("title").getTextContent());
                   myView.setTag((Object) catID);
                }else{
                    //Log.d("nodes","Pos: "+(position));
                }
                return myView;
        }
        private NodeList cu = null;
    }

Actualizar: Bueno, es bastante extraño. Después de un poco más de depuración, noté que en el GridView, el adaptador salta la posición 13, lo que significa que devuelve 1 en lugar de 13 y luego se mueve a 14. (Supongo que el 13 es mala suerte!)

Respuestas a la pregunta(6)

Su respuesta a la pregunta