[英]problem While Sharing text in Android using SharedPreferences
[英]Storage problem using Sharedpreferences on Android
我使用 recyclerView 创建了一个列表。 每个列表项都有一个按钮和一个进度条,按下按钮会增加进度条的值。 此外,使用 SharedPreferences,即使在关闭后也会保留记录。 但是,所有进度条都存储相同的值。 我想为每个按钮以不同的方式保存进度条的值。
这是适配器代码
public class DayListAdapter extends RecyclerView.Adapter<DayListAdapter.MainViewHolder> {
private ArrayList<AddDayInfo> mDataset;
private Activity activity;
static int nowValue ;
class MainViewHolder extends RecyclerView.ViewHolder {
CardView cardView;
ProgressBar daybar;
Button dayeat;
MainViewHolder(CardView v) {
super(v);
cardView = v;
this.daybar = (ProgressBar) v.findViewById(R.id.daybar);
this.dayeat = (Button) v.findViewById(R.id.dayeat);
dayeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveData();
getData();
Log.d("addvalue ", String.valueOf(nowValue));
//nowValue = bar.getProgress();
int maxValue = daybar.getMax();
if (maxValue == nowValue) {
nowValue = 0;
} else {
daybar.setVisibility(View.VISIBLE);
nowValue += 1;
}
if (nowValue == 0) {
daybar.setVisibility(View.GONE);
} else
daybar.setProgress(nowValue);
}
});
}
}
/*Save Data*/
public void saveData(){
SharedPreferences sf =this.activity.getSharedPreferences("test", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sf.edit();
editor.putInt("KEY2", nowValue);
Log.e("setv", String.valueOf(nowValue));
editor.apply();
}
/*Get Data*/
public void getData(){
SharedPreferences sf =this.activity.getSharedPreferences("test", Context.MODE_PRIVATE);
int value = sf.getInt("KEY2", nowValue);
Log.e("getv", String.valueOf(value));
nowValue=value;
}
这里的问题是您将值保存在 sharedPreferences 中的相同键“KEY2”中。 因此,如果您需要存储显示的每个项目的值,请使用不同的键。 不推荐这种方式。 我认为您应该使用本地数据库来存储您的值,使用可以使用 Room: https://developer.android.com/training/data-storage/room
我建议使用 Room 持久库将值存储在 Sqlite db 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.