在getview中实现SharedPreference



如何在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或任何其他本地存储。

相关内容

  • 没有找到相关文章

最新更新