在getview中实现SharedPreference

时间:2018-11-28 20:21:02

标签: android sharedpreferences android-adapter android-checkbox

如何在我的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类。看起来好吗?我有一个TextViewFireBase获取数据。

班级

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;
}

2 个答案:

答案 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而不是ListViewThis是一篇很好的文章,可帮助您处理RecyclerViewAdapters上的复选框状态。

适配器处理每个项目的状态的方式与活动的方式完全不同。滚动后不可见的项目将被销毁并仅在可见时重新创建。因此,您至少需要使用Map或SparseArray将所有值的状态存储在内存中。只需逐步执行链接,它就会起作用。

即使在不同的设备中,您是否也要保留与特定用户有关的数据?如果是,则应将其发送到Firebase,否则只需将其保存在本地即可。您可以使用SharedPreferences,RoomRealm或任何其他本地存储。