如何在Adapter
类中实现SharedPreference
?我想用它来持久化CheckBox
状态。现在,当我更改Activity
或在ListView
中添加一个新项目时,CheckBox
值会自行取消选中。
public class listItems extends ArrayAdapter<Items> {
Activity context;
List<Items> listitems;
public listItems(Activity context, List<Items> listitems) {
super(context, R.layout.list_items, listitems);
this.context = context;
this.listitems = listitems;
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View listViewItem = inflater.inflate(R.layout.list_items, null, true);
final Items items = listitems.get(position);
final TextView tvitemname = (TextView) listViewItem.findViewById(R.id.tvitemname);
final CheckBox simpleCheckedTextview = (CheckBox) listViewItem.findViewById(R.id.cb);
tvitemname.setText(items.getItemname());
simpleCheckedTextview.isChecked();
return listViewItem;
}
我已经添加了我的Items类。这个看起来好看吗?我有一个TextView
,它从FireBase
获取数据。
类别:
public class Items {
String itemId;
String itemname;
private boolean checked;
public Items(){
}
public Items(String itemId, String itemname, boolean checked) {
this.itemId = itemId;
this.itemname = itemname;
this.checked = checked;
}
public String getItemId() {
return itemId;
}
public String getItemname() {
return itemname;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public boolean isChecked() {
return checked;
}
如何在适配器类中实现SharedPreference
保存:
SharedPreferences sharedPreferences = context.getSharedPreferences("checkboxpref", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("checkbox_value", true);
editor.apply();
获取:
SharedPreferences sharedPreferences = context.getSharedPreferences("checkboxpref", 0);
final boolean getShared = sharedPreferences.getBoolean("checkbox_value", false);
我想你是Android开发的新手,所以我建议你开始使用RecyclerView
而不是ListView
。这是一篇很好的文章,可以帮助您处理RecyclerViewAdapters上的checkBox状态。
适配器处理每个项的状态的方式与"活动"的处理方式完全不同。滚动后,项目不可见,它们将被销毁,只有在可见时才会重新创建。这就是为什么您需要将所有值的状态至少存储在内存中,例如Map或SparseArray。只要一步一步地遵循链接,它就会起作用。
是否要将与特定用户相关的数据保存在不同的设备中?如果是,您应该将其发送到您的Firebase,否则只需在本地保存即可。您可以使用SharedPreferences、Room、Realm或任何其他本地存储。