View Full Version : ذخیره وضعیت ToggleButton با SharedPreferences
  
Hossein8867
پنج شنبه 29 بهمن 1394, 14:45 عصر
سلام دوستان.چطور میشه با SharedPreferences کاری کرد که وقتی از برنامه خارج شدیم برنامه به خاطر بسپارد که ToggleButton روی حالت on یا off بوده و به همان شکل اجرا شود؟
msroid
پنج شنبه 29 بهمن 1394, 15:53 عصر
سلام
// for storing toggleButton value
SharedPreferences sh = getSharedPreferences("mySharedPref", MODE_PRIVATE);
SharedPreferences.Editor editor = sh.edit();
editor.putBoolean("toggleStatus", toggleButton.isChecked());
editor.apply();
// for getting toggleButton value from sharedpreferences
toggleButton.setChecked(sh.getBoolean("toggleStatus", DefaultValue));
// agar natune meghdar morede nazar ro bekhune az DefaultValue estefade mikone
باید این کدها رو توی ()onStop بنویسی. یا اگر میخوای حتی وقتی رفت تو یه اکتیویتی دیگه و برگشت دوباره همون مقدار قبلی باشه باید توی ()onPause بنویسی.
Hossein8867
پنج شنبه 29 بهمن 1394, 17:33 عصر
سلام
// for storing toggleButton value
SharedPreferences sh = getSharedPreferences("mySharedPref", MODE_PRIVATE);
SharedPreferences.Editor editor = sh.edit();
editor.putBoolean("toggleStatus", toggleButton.isChecked());
editor.apply();
// for getting toggleButton value from sharedpreferences
toggleButton.setChecked(sh.getBoolean("toggleStatus", DefaultValue));
// agar natune meghdar morede nazar ro bekhune az DefaultValue estefade mikone
باید این کدها رو توی ()onStop بنویسی. یا اگر میخوای حتی وقتی رفت تو یه اکتیویتی دیگه و برگشت دوباره همون مقدار قبلی باشه باید توی ()onPause بنویسی.
با سلام و سپاس فراوان.عذر میخوام من در کلاسی که از BaseAdapter ارث بری کرده این ToggleButton رو استفاده کردم.کدش رو در پایین گذاشتم ، ممنون میشم بفرمایید چه جوری اینجا استفادش کنم؟
public class MyAdapterList extends BaseAdapter {
    private Context context;
    private List<String> text;
    public MyAdapterList(Context context, List<String> text) {
        this.context = context;
        this.text = text;
    }
    @Override
    public int getCount() {
        return text.size();
    }
    @Override
    public Object getItem(int position) {
        return text.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_S ERVICE);
        View view = inflater.inflate(R.layout.item_view, null, false);
        TextView tv = (TextView) view.findViewById(R.id.textView);
        tv.setText(text.get(position));
        Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/b_titr.ttf");
        tv.setTypeface(tf);
        tv.setTextColor(Color.parseColor("#003366"));
        tv.setTypeface(tv.getTypeface(), Typeface.BOLD);
        final ToggleButton toggleButton = (ToggleButton) view.findViewById(R.id.t_button);
        final MyDatabaseHelper myDatabaseHelper = new MyDatabaseHelper(context);
        toggleButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (toggleButton.isChecked()) {
                    myDatabaseHelper.insert(text.get(position));
					Toast.makeText(context, "مطلب مورد نظر به لیست علاقه مندی ها اضافه شد", Toast.LENGTH_SHORT).show();
					
                    toggleButton.setBackgroundResource(R.drawable.sele cted);
                    
                } else {
                    Integer deletedRows = myDatabaseHelper.deletedData(text.get(position));
					
					Toast.makeText(context, "مطلب مورد نظر با موفقیت حذف شد", Toast.LENGTH_SHORT).show();
					
                    toggleButton.setBackgroundResource(R.drawable.not_ selected);
                }
            }
        });
        return view;
    }
}
msroid
پنج شنبه 29 بهمن 1394, 21:07 عصر
اگر تعداد آیتم های لیست زیاد باشه و برای تمام آیتم ها هم toggleButton استفاده شده باشه کار درست و منطقی نیست که از SharedPreferences استفاده کنیم. در اینجور موارد اگر به آخرین وضعیت نیاز داشته باشیم باید از دیتابیس استفاده کنیم.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.