ثابت ماندن وضعیت چند چک بکس با استفاده از SharedPreferences
من با کمک دوستان یه برنامه درست کردم که یک چک باکس رو با SharedPreferences وضعیتش رو ثبت می کرد و سری بعد که برنامه اجرا میشد وضعیت اون چک باکس مونده بود . ممنون از همشون اما یه مشکل دارم اونم اینه که وقتی چند تا checkbox باشه چی ؟! باید چکار کرد من یه سری داخل stack overflow زدم و فهمیدم که باید آرایه ای از چک باکس بسازم که بتونم به چک باکس هام id بدم تا بتونم درست صداشون کنم و کد زیر رو درست کردم آیا این کد واسه ساخت یک ارایه از چک باکس درسته؟! و این که اون قسمت از برن
امه ام که SharedPreferences استفاده میشه با این کد تغییر پیدا می کنه آیا درسته اینم ؟! ممنون سورس هر دوشو پایین می فرستم :
ArrayList<CheckBox> myList = new ArrayList<Checkbox>() {{
for (int i = 0; i < Checkbox.length; i++) {
Checkbox checkbox = new Checkbox(checkBoxArr[i]);
checkboxes.add(checkbox); //for further use you add it to the list
}};
@Override
public void onPause() {
for (int i = 0; i < checkBoxArr.length; i++) {
save(i, checkBoxArr[i].isChecked());
}
}
@Override
public void onResume() {
super.onResume();
mCheckBox.setChecked(load());
}
private void save(int index, boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check" + index, isChecked);
editor.commit();
}
private boolean load() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", false);
}
یک نمونه از کد زدن اون به شکل ساده که قابل درک باشه بصورت زیر ممکنه : روش های گوناگون رو میتونید استفاده کنید ، که با بالا رفتم تجربه خودتون میتونید اونهارو استفاده کنید ، مثل ذخیره کردن JSON توی Prefences و روی SDCARD و غیره استفاده از یک متد و گرفتن View ها و مدیریت کلیک شدن اونها از درن یک حلقه و . . .
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
// . . .
preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
editor = preferences.edit();
checkBox_1.setChecked(G.preferences.getBoolean("CHK_1", false));
checkBox_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (chkInstagram.isChecked()) {
editor.putBoolean("CHK_1", true);
editor.commit();
} else {
editor.putBoolean("CHK_1", false);
editor.commit();
}
}
});
}
با درک موضوع ، خودتون میتونید از حلقه و آرایه ها استفاده کنید و یا هرکاری دیگه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .