![](/img/trans.png)
[英]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.