Warum ändert sich die Reihenfolge der Elemente beim Scrollen in Android GridView?

Ich habe ein GridView in Android, das ich mit Daten fülle, die aus einer XML-Ressource abgerufen wurden.
Zum Beispiel habe ich 15 Elemente in der GridView, die in Reihenfolge gebracht werden. Die Gesamthöhe übersteigt die Bildschirmhöhe, so dass ich scrollen muss, um den Rest der Elemente zu sehen.
Das Problem ist, dass sich die Reihenfolge der unsichtbaren Zeilen geändert hat, wenn ich einen Bildlauf nach oben durchführe. Es ist ein mysteriöses Verhalten, da manchmal Elemente Zeilen miteinander tauschen. Hier ist meingetView Methode:

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

Aktualisieren: Nun, es ist ziemlich seltsam. Nach einigem weiteren Debuggen bemerkte ich, dass der Adapter in GridView die 13. Position überspringt, was bedeutet, dass er 1 anstelle von 13 zurückgibt und dann auf 14 übergeht !!! (Ich denke, die 13 ist Pech!)

Antworten auf die Frage(6)

Ihre Antwort auf die Frage