Dlaczego przedmioty zmieniają kolejność po przewinięciu w Android GridView?

Mam GridView w Androidzie, który wypełniam go danymi pobranymi z zasobu xml.
Na przykład mam 15 elementów w GridView, które są umieszczone w kolejności. Całkowita wysokość przekracza wysokość ekranu, więc muszę przewinąć, aby zobaczyć pozostałe elementy.
Problem polega na tym, że kiedy przewijam do tyłu, kolejność niewidzialnych rzędów zmieniła się. To tajemnicze zachowanie, ponieważ czasami przedmioty wymieniają się między sobą rzędami. Tutaj jest mójgetView metoda:

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

Aktualizacja: Cóż, to raczej dziwne. Po dłuższym debugowaniu zauważyłem, że w GridView adapter pomija 13 pozycję, co oznacza, że ​​zwraca 1 zamiast 13, a następnie przechodzi do 14 !!! (Chyba 13 to pech!)

questionAnswers(6)

yourAnswerToTheQuestion