انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل عدم ثابت ماندن ایتم های کلیک شده در listview Base Adapter (اندروید)

مشکل عدم ثابت ماندن ایتم های کلیک شده در listview Base Adapter (اندروید)

#1
سلام خدمت زحمت کشان عزیز یه پروژه دارم که کلا navigationDrawer داره
که هرکدوم از ایتم هاش یه listview نشون میدن
و میخوام هر lisview که یوزر روش کلیلک کنه به favorite یا image ش بصورت دائمی تغییر کنه
که بمحض اسکرول به پایین عکس ها بحالت قبلی برمیگردن 
خواهش میکنم راهنماای کنین 
پاسخ

مشکل عدم ثابت ماندن ایتم های کلیک شده در listview Base Adapter (اندروید)

#2
سلام.
با اسکرول ListView به بالا یا پایین، item هایی که از صفحه خارج می شوند، حذف شده (دیگر آنها را در حافظه نداریم) و item هایی که به صفحه وارد می شوند، بر اساس Adapter تعیین شده برای ListView ، ساخته می شوند (در حافظه قرار می گیرند). بنابراین شما چون تغییرات را به صورت موقتی انجام می دهید (در اصل در کدهای Adapter تغییری داده نمی شود)، با خارج شدن item از صفحه، اطلاعات موقتی را دیگر نخواهیم داشت و وقتی دوباره همان item وارد صفحه می شود، چون دوباره توسط همان کدهای Adapter ساخته می شود، مثل بار اولش خواهد بود.
راه حل این است که تغییرات به گونه ای باشد که در دوباره سازی item ها تاثیر بگذارد. مثلا فرض کنید برای عکس هایی که باید در هر item از ListView در ImageView نمایش داده شوند، نام آنها را در یک آرایه (Array) ذخیره می کنیم و نمایش عکس در item ها در کدهای Adapter ، بر اساس نام های موجود در آن آرایه خواهد بود. پس وقتی بر روی یک item کلیک می کنیم، علاوه بر اینکه عکس آن را تغییر می دهیم (یک عکس جدید)، باید نام عکس جدید را هم برای آن item ، در آرایه مورد نظر، جایگزین نام عکس قدیمی کنیم. بنابراین اگر item از صفحه خارج شود و دوباره وارد صفحه شود، در دوباره ساخته شدن آن، این بار، عکس جدید در ImageView درون آن item نمایش داده می شود.
بنابراین سعی کنید که تغییرات اطلاعات ListView را بدین شیوه یا شیوه های مشابه دیگر (مثلا با SharedPreferences) که اطلاعات را به صورت ماندگار ذخیره می کنند، اجر ا نمایید.
نکته دیگر اینکه مثلا ساخت آرایه موقتی، می تواند به صورت موقت (با هر بار اجرای Activity) باشد، اما SharedPreferences اطلاعات را برای همیشه تغییر می دهد (در اجرای بعدی Activity نیز اطلاعات جدید نمایش داده می شوند).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط داش بهروز ، rasoulcarrera ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان