من یه List view دارم که چندتا ایتم از نوع String نگهداری میکنه.
میخوام وقتی گوشی میچرخه (Rotate) ,اطلاعات قبلی ذخیره و بازیابی بشن.
در مورد onRestoreInstanceState,onSaveInstanceState تحقیق کردم ولی متوجه نشدم که در رابطه با ListView چطوری ازش استقاده کنم.
متشکر میشم اگه راهنماییم کنید
(۱۳۹۴/۱۰/۲۳, ۰۵:۴۳ ب.ظ)admin نوشته: [ -> ]سلام.
کلید زیر را بخوانید :
کلید شماره 270
تشکر این روشی که شما گقتید,بهترین روش برای لیست های از قبل اماده شده است.
برای لیست های که بصورت داینامک مقدار دهی میشوند باید از روش دیگه ای استفاده کرد.
خیلی ممنون.
با سلام
میتونید جهت این کار به این صورت از OnSaveInstancestate و OnRestoreInstanceState استفاده کنید
ابتدا یه Class جهت ذخیره پارامترها و متغیرهای مورد نیاز میسازید (حتما Interface . Serializable رو Implement کنید )
با دستور
کد:
outState.putSerializable("MyDate",MyClass);
در قسمت OnSaveInstanceState اطلاعات شما ذخیره میشه و جهت بازیابی اطلاعات هم میتونید از تابع OnRestoreInstanceState استفاده کنید و با دستور
کد:
savedInstanceState.getSerializable("rowData");
اطلاعات خودتون رو بازیابی کنید
این روش در مواقعه ای که برنامه شما عمل Restart رو انجام میده کارایی داره
تنها زمانی که کلید Back رو بزنید کارایی نداره و اطلاعات ذخیره نمیشه
سلام تشکر بخاطر کمکی که کردید.چون تجربه کار کردن با
Serializable و نداشتم از این یه روش دیگه استفاده کردم.
داخل onSaveInstancseState مقدارش و ذخیره کردم.
کد پیاچپی:
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putStringArrayList("myKey",arraylist);
}
و داخل onCreate دریافتش کردم.
کد پیاچپی:
if (savedInstanceState!=null){
arraylist=savedInstanceState.getStringArrayList("mykeyarraylist");
count=savedInstanceState.getInt("mykeyint");
}else {
arraylist=new ArrayList<String>();
}