کلیدستان

نسخه‌ی کامل: مشکل عدم ثابت ماندن ایتم های کلیک شده در listview Base Adapter (اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام خدمت زحمت کشان عزیز یه پروژه دارم که کلا navigationDrawer داره
که هرکدوم از ایتم هاش یه listview نشون میدن
و میخوام هر lisview که یوزر روش کلیلک کنه به favorite یا image ش بصورت دائمی تغییر کنه
که بمحض اسکرول به پایین عکس ها بحالت قبلی برمیگردن 
خواهش میکنم راهنماای کنین 
سلام.
با اسکرول 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 نیز اطلاعات جدید نمایش داده می شوند).