我在任何地方都找不到一篇文章来解释如何在 ListView 中实际保留复选框的结果。很多展示如何显示,但他们都忽略了如何保存。
当我从菜单项中单击“设置收藏夹”时,我想加载一个名称列表并为每个名称显示一个复选框。我希望能够进行多次“检查”,然后我希望能够以某种形式将列表及其检查设置保存到一些持久性存储中,最好是在 SD 卡上。该列表只需要包含“name”的值和“isChecked”的值
我将只显示下面的结构,而不是所有代码,因为我认为我的问题是结构和范围之一,而不是语法
在主菜单活动中,我将一个列表(checkedlist)传递给一个自定义适配器
public class SetFavourites extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.
.
FavouritesAdapter adapter = new FavouritesAdapter(this, checkedList);
setListAdapter(adapter);
}
适配器有一个 onCheckedChangeListener,所以每当一个复选框被更改时,在我写 //Here's where I'm 卡住的地方,我将拥有该行的名称和检查值
public class FavouritesAdapter extends ArrayAdapter<JSONObject> implements OnCheckedChangeListener {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
@Override
public void onCheckedChanged(CompoundButton cb, boolean isChecked) {
JSONObject checked = getItem(posSelected);
// Here's where I'm stuck
}
}
所以我的问题是,如果有多个检查事件,我该如何保存数据?
如果我创建一个模型来保存行名称及其检查状态,那么我应该在哪里实例化该模型 - 从活动中还是从适配器中?
如果在适配器内,它没有告诉“检查”何时完成的事件,所以虽然它可以添加到模型中,但它不能进行保存。
如果Adapter实例化了模型,主Activity怎么保存呢?我可以使用什么事件来完成数据保存?后退按钮方法(在主 Activity 中定义,因此不能在 Adapter 中执行)或 Activity onStop() 方法,类似地。
如果我在Activity中实例化数据模型并传入,如何再次传出去保存?
如您所见,我完全不知道如何处理这个问题。
谢谢