Ich habe ein Fragment, das die textViews aus einem Datenobjekt setzt. Dieses Datenobjekt ist anfänglich Null, wenn das Fragment erstellt wird, aber nach einer Netzwerkanforderung aktualisiert wird. Um nun die Textansichten zu aktualisieren, erstelle ich eine Funktion 'updateAll' und übergebe das Fragment an die Callback-Funktion, die die Netzwerkantwort behandelt. Und sobald die Daten auf das Datenobjekt gesetzt sind, rufe ich 'updateAll' von der Fragmentreferenz auf.Ist meine Methode, Textview von einer Volleyantwort zu aktualisieren, der "Android Weg" der richtige Weg?
Beispiel:
class someFragment extends Fragment {
private Textview foo;
private dataObject obj;
...
public onCreate(...) {
this.obj = new dataObject();
sendRequestToVolley(..., new VolleyCallbacks(this));
}
public onCreateView(...) {
...
foo.setText(obj.someVar);
}
public void updateAll() {
foo.setText(obj.someVar);
}
}
class VolleyCallbacks implements someInterface {
public VolleyCallbacks(someFragmment fragment, dataObject obj) {
this.obj = obj;
this.fragment = fragment;
}
public onSuccess(Response r) {
obj.updateData(r);
this.fragment.updateAll();
}
}
Ist dies der richtige Weg, dies zu tun? Gibt es eine bessere Methode?
Statt einem 'dataObject' als privates Mitglied des Fragments, könnte man es als Parameter an' updateAll() 'übergeben. Ich würde wahrscheinlich nur die Methode 'update()' nennen, da sie nur die UI mit einem einzigen Wert zu aktualisieren scheint. –
anstelle des Fragments, das Sie in VolleyCallbacks übergeben, können Sie Bezug der Schnittstelle und der dafür verwendeten Schnittstelle weitergeben. da könnte Speicherleck sein. –
Sie können auch die Datenbindungsbibliothek anzeigen. Es ist eine gute Alternative, all dies von Hand zu machen. –