如何在我的SharedPreference
类中实现Adapter
?
我想用它来保持CheckBox
状态。现在,当我更改CheckBox
或在Activity
中添加新项目时,ListView
值会自行取消检查。
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;
}
答案 0 :(得分:0)
如何在我的适配器类中实现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);
答案 1 :(得分:0)
我想您是Android开发的新手,所以我建议您开始使用RecyclerView
而不是ListView
。 This是一篇很好的文章,可帮助您处理RecyclerViewAdapters上的复选框状态。
适配器处理每个项目的状态的方式与活动的方式完全不同。滚动后不可见的项目将被销毁并仅在可见时重新创建。因此,您至少需要使用Map或SparseArray将所有值的状态存储在内存中。只需逐步执行链接,它就会起作用。
即使在不同的设备中,您是否也要保留与特定用户有关的数据?如果是,则应将其发送到Firebase,否则只需将其保存在本地即可。您可以使用SharedPreferences,Room,Realm或任何其他本地存储。