2016-06-16 6 views
0

In der RecyclerViewFragment-Klasse gibt es MovieData und in der Adapterklasse MovieData.getMovieList().RecyclerView und Adapter, welchen sollte man für Datenänderungen sorgen?

Meine Frage ist, wenn Event-Handler,

ausgelöst werden
  1. hinzufügen/löschen Daten direkt in RecyclerViewFragment Klasse
  2. definieren add()/Löschen() Funktion in Adapter Klasse und rufen adapter.add()/adapter.delete() in RecyclerViewFragment Klasse

Welcher Weg ist das bessere Design? Wer trägt die Verantwortung für die Datenänderung?

Antwort

0

Ich würde vorschlagen RecyclerViewFragment mit den Daten zu haben. Und erstellen Sie einen Adapter, der den Verweis auf die Daten übergibt. Zum Beispiel:

mAdapter = new CustomAdapter(mMovieData.getMovieList()); 

Dann in der RecyclerViewFragment nur die benötigten Aktionen wie Hinzufügen/Entfernen wie:

mMovieData.getMovieList().add(index); 

Ich glaube, das ist die häufigste Art und Weise todo ist es. Sie möchten die getMovieList-Daten nicht zweimal in Adapter und RecyclerViewFragment replizieren. Dies wird verwirrend werden.

+0

Vielen Dank für den Vorschlag. Sieht wirklich sauberer aus, um auf diese Weise zu kodieren – Rangtian

0

Wenn die Datenänderung nach der Initialisierung des Adapters erfolgt, sollte diese im Adapter verarbeitet werden. Adapter hat auch eine nette Funktion notifyDataSetChanged(), die Artikelpositionen innerhalb des Adapters aktualisiert, wenn sich Daten geändert haben.

0

Die Recyclerview ist nicht mit den Daten beschäftigt, dies wird alles von dem Adapter gehandhabt, den Sie erstellt haben, um die Daten darzustellen. Sehen Sie sich die Funktionen here an, um zu sehen, welche Möglichkeiten Sie in Bezug auf Datenänderungen haben.

0

Adapter ist die verantwortliche Klasse zum Füllen einer Liste mit Daten, zum Beispiel, wenn Sie eine Liste haben, die mit Daten gefüllt werden soll, sagen SCORES dann ist der Adapter verantwortlich für das Ausfüllen dieser Punkte in der Liste. Auf der anderen Seite wird RecyclerView repossibilisiert, damit der Adapter es schneller und effektiver füllen kann. Die RecyclerView verwendet Ansichten, die zuvor zum Anzeigen von Daten durch den Adapter verwendet wurden, und platziert sie zur späteren Wiederverwendung im Cache, um das gleiche Objekt anzuzeigen Es muss nicht jedes Mal ein neues Objekt initialisiert werden, wenn der Adapter einen Eintrag in der Liste füllen möchte, was ihn schneller macht.

and here is a link that might help you as well :

Hoffnung meine Antwort Sie haben dazu beigetragen.

+0

Oh, ich schätze, ich habe meine Frage nicht klar beschrieben. Ich sage nicht, wer die View mit vorhandenen Daten aufblasen soll. Ich sage zum Beispiel, wenn ich lange auf eine ItemView klicke, werden diese Daten in dataSet geklont und notifyDataSetChanged() aufgerufen. Wer sollte also den Klonjob machen? RecyclerView oder Adapter? – Rangtian