ورود

View Full Version : ذخیره موقعیت نمایش ListView



amirarcs
سه شنبه 22 بهمن 1392, 16:57 عصر
دوستان من یک پرئژه دارم که داخلش یک ListView هست که از dataBase حدود صد بیت شعر را دریافت میکنه و نمایش میده.
چطور میتونم کدی بنویسم که وقتی داری شعر می خونی و به فرض وارد یک اکتیویتی دیگه میشی و دوباره برمیگردیم صفحه از آخرین موقعیتش نمایش داده بشه

saeed_g21
سه شنبه 22 بهمن 1392, 19:15 عصر
position محلی که انتخاب میشه رو بگیر یکجا ذخیره کن بعد که برگشت به لیست ویو position ی که ذخیره کرده بودی رو بده به کد زیر تا از اونجا به بعد برات نمایش بده


lst_data.setSelection(0);

amirarcs
سه شنبه 22 بهمن 1392, 19:51 عصر
ممنونم دوست من. اما امکان داره با یک مثال به من بگین. چون با پیاده سازیش مشکل دارم

raha_jon
دوشنبه 19 خرداد 1393, 23:13 عصر
سلام مشکل دقیقا مشکل منم هست لطفا راهنمایی کنید.

poorman
سه شنبه 20 خرداد 1393, 00:38 صبح
سلام مشکل دقیقا مشکل منم هست لطفا راهنمایی کنید.

توی این پست من توضیح دادم حل این مشکل رو

http://barnamenevis.org/showthread.php?441406-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-SQLite-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A8%D8%AF%D9%88%D9%86-%D9%86%DB%8C%D8%A7%D8%B2-%D8%A8%D9%87-%DA%A9%D9%84%D8%A7%D8%B3-DataBaseHelper&p=2037062&viewfull=1#post2037062

raha_jon
سه شنبه 20 خرداد 1393, 23:43 عصر
هم چنان منتظریم کسی اینو برامون خورد کنه کامل بلد نیستم چه کنم؟:گریه::گریه:

poorman
سه شنبه 20 خرداد 1393, 23:43 عصر
بنا به درخواست توضیح بیشتر :

کار با shared preferences که توی این پست (http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF&p=2008744&viewfull=1#post2008744)توضیح داده شده

اگر میخواین لیستتون به موقعیت قبلی برگرده، توی متد onDestroy اکتیویتی شما باید top و index لیستتون رو ذخیره کنید

توی این متد شی shared preference مورد نظرتون رو باز میکنید ابتدا، یا اگر باز نبود خودش میسازه

بعدش تاپ و ایندکس لیست رو توش ذخیره میکنید و commit میکنید

@Override protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
int listIndex = list.getFirstVisiblePosition();
View view = list.getChildAt(0);
int listTop = view.getTop();
SharedPreferences prefs = this.getSharedPreferences( "listPosition", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("index", listIndex);
editor.putInt("top", listTop);
editor.commit();


}

بعد هر جا که آداپتر لیستتون رو مقدار دادید و بعد اینکه گفتید list.setAdapter میاین موقعیت قبلی رو میخونید و به لیست میگید بره به اون موقعیت

// بعد از مقدار دادن آداپتر لیست و ست کردن آداپتر
SharedPreferences prefs = this.getSharedPreferences( "listPosition", Context.MODE_PRIVATE);
int listIndex = prefs.getInt("index", 0);
int listTop = prefs.getInt("top", 0);
list.setSelectionFromTop(listIndex, listTop);

در صورتی که برای اولین بار اطلاعات رو میخونید، مقدار پیش فرض صفر برگشت داده میشه، که یعنی اول لیست شما

فقط توجه داشته باشید که لیست ویو شما باید عمومی تعریف شده باشه که داخل تابع onDestroy قابل دسترسی باشه

hamidreza.geo
پنج شنبه 29 آبان 1393, 14:44 عصر
با سلام ممنون از راهنمایی خوب شما. من یه لیست ویو دارم که از رو دیتابیس خونده می شه. روی هر آیتم که کلیک میشه موقع برگشتن به اکتویتی لیست ویو لیست به اول بر می گرده. از این آموزش شما استفاده کردم ولی درست نشد (اینی که شما گفتین فقط برا وقتی هست که از برنامه خارج می شم و اکتویتی بسته می شه)..
لطفا یه راهنمایی کنید من این مشکلم حل بشه.

tux-world
پنج شنبه 29 آبان 1393, 20:08 عصر
هیچ نیازی به استفاده از shared preferences نیست !! شما باید چرخه حیات یه اکتیویتی رو بلد باشید اون رو درست تنظیم کنید مثل من به این همه بازی الکی و بیخود نیازی نخواهید داشت