کلیدستان

نسخه‌ی کامل: مشکل حفظ اطلاعات ListView درهنگام چرخش گوشی (برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
من یه List view دارم که چندتا ایتم از نوع String نگهداری میکنه.
میخوام وقتی گوشی میچرخه (Rotate) ,اطلاعات قبلی ذخیره و بازیابی بشن.
در مورد onRestoreInstanceState,onSaveInstanceState تحقیق کردم ولی متوجه نشدم که در رابطه با ListView چطوری ازش استقاده کنم.
متشکر میشم اگه راهنماییم کنید
سلام.
کلید زیر را بخوانید :

کلید شماره 270

Flower
(۱۳۹۴/۱۰/۲۳, ۰۵:۴۳ ب.ظ)admin نوشته: [ -> ]سلام.
کلید زیر را بخوانید :

کلید شماره 270

Flower

تشکر این روشی که شما گقتید,بهترین روش برای لیست های  از قبل اماده شده است.
برای لیست های که بصورت داینامک مقدار دهی میشوند باید از روش دیگه ای استفاده کرد.
خیلی ممنون.
با سلام

میتونید جهت این کار به این صورت از 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>();