Listview mit CursorAdapter

8

Ich entwickle eine Anwendung, die Telefonkontakte mit CursorAdapter anzeigt. Als ich es ausführte, sah ich mich einer Listenansicht gegenüber, in der nur ein Kontakt wiederholt wurde ("David" ist einer meiner Kontakte, nur in Listview wiederholt)

David 017224860

David 017224860

David 017224860

David 017224860

David 017224860

David 017224860 .

.

.

.

Meine Aktivität sieht wie

aus %Vor%

Und mein CursorAdapter sieht so aus:

%Vor%     
vahid en 29.11.2012, 17:12
quelle

2 Antworten

27

Ich habe ein paar Punkte bemerkt:

  1. Ein CursorAdapter bewegt den Cursor für Sie, nehmen Sie Ihren Aufruf an cursor.moveToNext() .
  2. Der getView() des Adapters ruft newView() und bindView() selbst auf; Sie sollten diese Methoden nicht selbst aufrufen.
  3. Sie sollten sich die Vorlesungen des Android-Entwicklers bei Google IO ansehen , um Tipps und Tricks zum Beschleunigen Ihres Adapters zu erhalten. Tipps wie:
    • Verwenden Sie einen ViewHolder, anstatt findViewById() wiederholt aufzurufen.
    • Speichern Sie die Indizes Ihres Cursors, anstatt getColumnIndex() wiederholt aufzurufen.
    • Holen Sie den LayoutInflater einmal und behalten Sie eine lokale Referenz.
Sam 29.11.2012, 17:16
quelle
3

Außerdem schlage ich vor, dass Sie CursorManager nicht mehr mit CursorLoader verwenden. Dies ist im Android-API-Leitfaden unter Loaders dokumentiert. Ein spezifisches Beispiel, das Sie nützlich finden könnten, ist hier .

Ein Cursor-Adapter verbindet einen Cursor mit einem ListView. Der Cursor ist eine Datenansicht der Daten und der ListView ist eine UI-Ansicht der gleichen Daten. Sie müssen nichts programmieren, damit der ListView mit dem Cursor synchron bleibt, das wird automatisch erledigt.

Sie müssen ListView mitteilen, welche Spalten im Cursor angezeigt werden sollen. Weitere Informationen finden Sie in der Dokumentation zum SimpleCursorAdapter Klasse. Normalerweise verwende ich diese Klasse, es sei denn, ich muss die Daten ändern, während ich sie vom Cursor zur ListView verschiebe.

    
Joe Malin 29.11.2012 21:27
quelle