Speichern und wiederherstellen des ListView-Steuerelements mit Benutzerdefinierten Liste-Adapter

Ich bin derzeit mit einem custom list adapter und ändern die Zeilen der listview zur Laufzeit (ändern von text, Schaltflächen usw.).

Möchte ich einen Weg finden, speichern/wiederherstellen der änderungen der listview zur Laufzeit, wenn ich beginne ein weiteres fragment und dann wieder kommen, um das fragment mit der listview.

Derzeit die listview neu geladen wird jedes mal, und alle runtime-änderungen sind verloren.

Folgende zeigt, wie ich bin Einstellung der Liste-adapter.

 public void setAdapterToListView(ArrayList<item> list) {
        ItemList = list;
        ItemAdapter adapter = new MenuItemAdapter(list, getActivity(), this);
        ItemListView.setAdapter(adapter);
    }

Bin ich dann mit einer benutzerdefinierten Liste-adapter, um die änderungen vorzunehmen (wie bereits erwähnt) während der Laufzeit. Hier ist ein snippet, wie ich bin, Dinge zu verändern zur Laufzeit:

if (holder.qty.getText().toString().equals("Qty")) {
    relativeLayout.setBackgroundColor(row.getResources().getColor(R.color.navDrawerL ightBlue));
    holder.qty.setText("1");
    holder.qty.startAnimation(anim);
    holder.removeItem.setBackgroundResource(R.drawable.remove_item_red);
    holder.removeItem.setEnabled(true);

   ...

Gibt es eine empfohlene Weg, um dieses Problem Herangehen?

  • Look up wie zu verwenden, speichern und wiederherstellen der Instanz, Zustand. Es ist Teil der Activity-und Fragment-Lebenszyklus und können gefunden werden in den offiziellen android-API-Referenz. Siehe: developer.android.com/training/basics/activity-lifecycle/... (dies ist für eine Aktivität, sondern es gilt für die Fragmente zu)
  • Ich kann nicht verstehen, Ihr Problem. Sie verwenden eine benutzerdefinierte adapter-aber das ist nicht im Zusammenhang, wie Sie das speichern der Listview-Daten. Können Sie einfach speichern Sie Ihre ArrayList im cache, bis die app beendet? Oder brauchen Sie eine Datenbank für das Listview-Daten zu speichern, die Sie auch nach app beendet?
  • Ich bin das abrufen der Daten für das listview-von einem server, so dass ist nicht das Problem. Das listview-Steuerelement geändert werden kann, indem der user per button-Klicks usw. Es ist im wesentlichen ein Warenkorb. Ich will, um sicherzustellen, dass diese änderungen auf die listview gespeichert und können wiederhergestellt werden. Ist es möglich zu bewahren, den Zustand der gesamten listview?
  • Die wichtigsten staatlichen meiner Meinung nach ist die Zeile, position und die Sortierreihenfolge der Listview. Aber wenn Sie wollen etwas umfangreicher, Blick auf Serializable, developer.android.com/reference/java/io/Serializable.html . Wenn Sie dieses design, tag-Ihre Frage mit Serializable.
  • Können Sie Ihre adapter-code? Oder wenigstens den relevanten code zu zeigen, wie verfolgen Sie die änderungen auf den text, buttons, etc in den adapter.
  • Ich habe einige code zeigt einen Teil von dem, was ich ändern bin in den adapter.
  • Also dann...ist es die Daten in den adapter selbst, der bekommt mutierte die änderungen, wie das ListView angezeigt, die den Benutzer? Ich nehme an, Sie füllen qty Textfeld mit solchen Daten.
  • so, basierend auf Benutzer-Interaktion mit dem listview-ich ändern, was dem Nutzer angezeigt werden (Menge, Preis etc). So ja, die Daten innerhalb der adapter selbst ist, was bekommt mutiert. Dies erfolgt über klicken Sie auf die Zuhörer. Der plan ist, speichern Sie diese Daten geändert haben, und dann schicken Sie es an den server für die Verarbeitung etc. Ich versuche, herauszufinden, ein Fluss der Logik, um diese zu bewältigen, sowie beibehalten, die änderungen an der listview, so dass ein Benutzer kann 'wieder aus' dieser Ansicht, und dann kommen Sie zurück und sehen Sie alles wie Sie es verlassen hatten (mutierte Daten intakt). Ich hoffe das macht Sinn?

InformationsquelleAutor Osborne Cox | 2015-03-23
Schreibe einen Kommentar