gpt4 book ai didi

java - 即使应用程序关闭,也尝试保存复选框的状态和该复选框内的数据

转载 作者:行者123 更新时间:2023-12-02 03:01:22 24 4
gpt4 key购买 nike

我创建了一个复选框,一次只能选择一个复选框。这很好用。我的应用程序要求复选框始终保持选中状态,即使应用程序关闭也是如此。我想知道的是如何获取该复选框以及使用此复选框存储的数据以保存,即使我的应用程序已关闭。我做了一些挖掘,发现您可以使用共享首选项,但我似乎无法弄清楚如何在我的应用程序中实现它。这是我当前用于实现复选框的代码:firebase recycler 适配器

 adapter1 = new FirebaseRecyclerAdapter<contact, contactAdapter>(options1) {
@Override
protected void onBindViewHolder(@NonNull final contactAdapter holder, final int position, @NonNull contact model) {
holder.contactName.setText(model.getContactName());
holder.contactPhone.setText(model.getContactPhone());
if(lastCheckedPos == position){
holder.chk.setChecked(true);
}
else{
holder.chk.setChecked(false);
}
holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (position == lastCheckedPos) {
holder.chk.setChecked(false);
lastCheckedPos = -1;
}else {
lastCheckedPos = position;
for (int i = 0; i < adapter1.getItemCount(); i++) {
if (adapter1.getItem(i).isSelected(true)) {
number = ((TextView) holder.itemView.findViewById(R.id.contactPhone)).getText().toString();
Toast.makeText(getActivity(), "Data Inserted....." + number, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
}
}
contactsView.post(new Runnable()
{
@Override
public void run() {
adapter1.notifyDataSetChanged();
}
});

}
}
});
}

@NonNull
@Override
public contactAdapter onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new contactAdapter(LayoutInflater.from(getActivity()).inflate(R.layout.item_contacts, parent, false));

}
};

适配器类

public class contactAdapter extends RecyclerView.ViewHolder{

public TextView contactName, contactPhone;
CheckBox chk;
AdapterView.OnItemClickListener itemClickListener;




public contactAdapter(@NonNull View itemView) {
super(itemView);
contactName = itemView.findViewById(R.id.contactName);
contactPhone = itemView.findViewById(R.id.contactPhone);
chk = itemView.findViewById(R.id.myCheckBox);
this.setIsRecyclable(false);

}
}

关于如何在我的应用程序关闭时保留复选框的任何建议吗?

最佳答案

尝试在共享首选项中保存单击项目的位置和状态:

@Override
protected void onBindViewHolder(@NonNull final contactAdapter holder, final int position, @NonNull contact model) {

//setting the views
holder.contactName.setText(model.getContactName());
holder.contactPhone.setText(model.getContactPhone());

//check prefrences for the state of the check
SharedPreferences prefs = getSharedPreferences("check", MODE_PRIVATE);
String check_state = prefs.getString( "state", "default");


if(check_state.equals("true"+String.valueOf(position))){

holder.chk.setChecked(true);


}else if (check_state.equals("false"+String.valueOf(position))){

holder.chk.setChecked(false);

}else{

holder.chk.setChecked(false);

}





//on click save the state in preference

holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked) {
//checked
holder.chk.setChecked(true);

//save to prefrences

SharedPreferences.Editor editor = getSharedPreferences("check", MODE_PRIVATE).edit();
editor.putString("state", "true"+String.valueOf(position));
editor.apply();
adapter1.notifyDataSetChanged();

}else {
//unchecked
holder.chk.setChecked(false);

//save to prefrences

SharedPreferences.Editor editor = getSharedPreferences("check", MODE_PRIVATE).edit();
editor.putString("state", "false"+String.valueOf(position));
editor.apply();
adapter1.notifyDataSetChanged();


}

}
});

}

关于java - 即使应用程序关闭,也尝试保存复选框的状态和该复选框内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61395991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com