2014-01-15 13 views
7

Ich habe etwa 100 von Zeitplänen in der Datenbank gespeichert, die sie basierend auf Listview basierend auf Anforderungen wie, wöchentliche Basis, nächste Woche, nächsten Monat, über fällige Zeitpläne etc. anzeigen müssen ...besser zu verwenden Cursor-Adapter oder Array-Adapter

Es ist gut, alle Zeitpläne beim Start der Anwendung zu laden und sie basierend auf der Option anzuzeigen, die der Benutzer im Array-Adapter auswählt (wöchentlich, überfällig, monatlich usw.). Oder verwenden Sie zur Laufzeit die Abfrage, holen Sie die Ergebnisse aus der Datenbank und verwenden Sie den Cusor, um die Daten mit cusoradapter in listview zu laden.

Welche Methode ist effektiv ?, fühle ich Abfrage der DB ist immer expesive Betrieb? ist es wirklich wahr ?.

+0

http://stackoverflow.com/questions/8556929/cursoradapter-vs-arrayadapter-for-a-listview Bitte sehen Sie sich diese –

+0

'Bitte schließen Sie Ihre Frage, indem Sie auf das Häkchen auf der linken Seite der Antwort, die geholfen hat Sie am meisten " –

+0

Super, done @ user3110424, danke und Entschuldigung für die Verzögerung :) – Naruto

Antwort

11

In Ihrem Fall CursorAdapter ist geeigneter, wenn es eine Datenbank gibt, weil es nicht alle Datensätze wie ArrayAdapter lädt. Es lädt nur die sichtbaren Datensätze oder die Datensätze, die Sie abfragen. Hier finden Sie die Dokumentation für CursorAdapter:

Adapter, der Daten von einem Cursor zu einem ListView-Widget verfügbar macht.

Der Cursor muss eine Spalte namens "_id" enthalten oder diese Klasse wird nicht funktionieren. Darüber hinaus wird MergeCursor mit dieser Klasse nicht funktionieren, wenn die zusammengeführten Cursor überlappende Werte in ihren Spalten "_id" haben.

Wie aus dem Dokument Content provider, so könnte es nicht nützlich für Sie sein.

Sie benötigen keinen Anbieter, um eine SQLite-Datenbank zu verwenden, wenn die Verwendung ausschließlich in Ihrer eigenen Anwendung erfolgt.

Sie können CursorAdapter über ArrayAdapter wählen.

+0

müssen wir Loader für die Verwendung von Cursor-Adapter verwenden? – Naruto

+1

Wenn Sie möchten, können Sie den Loader mit dem Cursor-Adapter verwenden. Sehen Sie hierzu [Wie kann CursorLoader mit LoaderManager den Cursor an einen CursorAdapter senden?] (Http://stackoverflow.com/questions/11150527/how-does-cursorloader-with- loadermanager-know-to-send-the-cursor-zu-a-cursoradap) –

+0

Danke für nützlichen Link (+1 für tat), hier eine Sache, Content-Provider und Loader sind voneinander abhängig ?, ohne Content-Provider kann ich verwenden Lader? Kannst du meine Zweifel klären? Danke – Naruto

0

Bessere Nutzung CursorLoader

A CursorLoader läuft eine asynchrone Abfrage im Hintergrund gegen einen Contentprovider, und gibt die Ergebnisse an die Aktivität oder FragmentActivity, von dem es hieß. Dadurch kann die Aktivität oder FragmentActivity während der Abfrage weiterhin mit dem Benutzer interagieren.

Loader Eingeführt in Android 3.0, Ladern machen es einfach, Daten asynchron in einer Aktivität oder ein Fragment zu laden.

+0

Was ist mit Unterstützung für ältere Versionen wie V2.2, 2.3 Versionen von Telefonen? – Naruto

+0

@LLL für die Arbeit in der niedrigeren Version wie 2.2, 2.3 verwenden Sie android-support-v4.jar. Wie Fragment in API-11 eingeführt, aber mit Hilfe der unterstützenden Bibliothek arbeitet es auch an der unteren API. –

+0

ok, sieht cool aus. Jetzt habe ich die Hälfte meiner Arbeit mit Arrayadaptern und einer grundlegenden Technik gemacht, so dass diese Kunden meine Arbeit vereinfachen. es ist besser, Cusors zu verwenden ?. – Naruto

Verwandte Themen