【发布时间】:2015-03-23 00:24:48
【问题描述】:
我目前正在使用custom list adapter 并在运行时修改列表视图的行(更改文本、按钮等)。
当我启动另一个片段然后返回到包含列表视图的片段时,我想找到一种方法来保存/恢复在运行时对listview 所做的更改。
目前每次都会重新加载列表视图,并且所有运行时更改都会丢失。
下面显示了我是如何设置列表适配器的。
public void setAdapterToListView(ArrayList<item> list) {
ItemList = list;
ItemAdapter adapter = new MenuItemAdapter(list, getActivity(), this);
ItemListView.setAdapter(adapter);
}
然后我使用自定义列表适配器在运行时进行更改(如上所述)。这是我如何在运行时更改内容的 sn-p:
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);
...
有没有推荐的方法来解决这个问题?
【问题讨论】:
-
查看如何使用保存和恢复实例状态。它是 Activity 和 Fragment 生命周期的一部分,可以在官方 android API 参考中找到。请参阅:developer.android.com/training/basics/activity-lifecycle/…(这是针对 Activity,但也适用于 Fragments)
-
我可能不明白你的问题。您正在使用自定义适配器,但这与您如何保存 Listview 数据无关。您可以简单地将 ArrayList 保存在缓存中直到应用程序退出吗?或者您是否需要一个用于 Listview 数据的数据库以在应用退出后保存它们?
-
@TheOriginalAndroid 我正在从服务器检索列表视图的数据,所以这不是问题。用户可以通过单击按钮等方式修改此列表视图。它本质上是一个购物车。我想确保对列表视图的这些修改被保存并且可以恢复。是否可以保留整个列表视图的状态?
-
我认为的主要状态是Listview的行位置和排序顺序。但是,如果您想要更广泛的内容,请查看 Serializable,developer.android.com/reference/java/io/Serializable.html。如果您选择此设计,请使用 Serializable 标记您的问题。
-
你能发布你的适配器代码吗?或者至少是显示您如何跟踪对适配器中的文本、按钮等的修改的相关代码。
标签: android listview android-fragments android-listview