بازگشتن از یک اکتیویتی و آپدیت ListView و حفظ موقعیت Scroll
سلام بر بروبچس و استاد عزیز
سوالو ساده میپرسم
من یک لیست ویو دارم توی اکتیویتی 1 .. وقتی که روی یکی از آیتم ها گلیک میشه میره مثلا اکتیویتی x .. حالا سوال
وقتی برمیگردم ارور میده وقتی یکم اسکرول میکنم ... خودم اومدم چیکار کردم ! اومدمو توی onresume دوباره کدهای مربوط به ست کردن adapter و خوندن از دیتابیس و notifySetDataChange رو انجام دادم ... اوکی هست کار میکنه ولی مشکل ! اینه که کاربر اومده و روی یکی از آیتمها برای مثال وسطای اسکرول کلیک کرده . وقتی برمیگرده اسکرول آپدیت شده و از اول لیست رو نشون میده .. خوب کلافه میشه کاربر دیگه اومده تا وسط لیست دیده رفته توی یک اگتیویتی دیگه حالا که برمیگرده لیست اومده اولش چکار کنم حالا !؟
از اونجایی که شما Acttivity رو کاملا نمی بندید و فقط بینشون جابجا می شید یک بار هم به جای OnResume از OnStart استفاده کنید
کدها رو اونجا قرار بدین
ببینید جواب می گیرید
شما می تونید شماره Index ـی که الان روش هستید رو قبل از آپدیت از ListView دریافت کنید و فکر کنم متدی بود به اسم setSelectionFromTop در ListView . با استفاده از اون فکر کنم بتونید Scroll کنید به نقطه قبلی.
به این نکته توجه داشته باشید که راه های زیادی داره. مثل نگه داشتم محل Scroll فعلی و Scroll کردن مجدد به آن نقطه.
اما نکته مهمتر این هست که ممکنه دیتا به آخرش یا اول لیست یا حتی وسطای لیست اضافه بشه. در اینصورت دیگه نقطه Scroll ـی که ذخیره کرده اید روی آیتم مورد نظر شما دقیقاً نمی افته.
اگر هدف شما همیشه در آخر بودن یک ListView هست که می تونید از روش خیلی ساده تری استفاده کنید و آنهم گذاشتن این دو خاصیت در ListView هست:
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .