PDA

View Full Version : مشکل در آپدیت آداپتر کاستوم لیست



hadi2016
دوشنبه 05 آذر 1397, 19:30 عصر
سلام.دوستان من یه کاستوم لیست تعریف کردم. ورودیش سه تا آرایه رشته ای هست.
اولی آرایه ای از id ها
دومی آرایه ای عنوان ها
سومی آرایه url عکس
با این کاستوم لیست ویو که ساختم بدون مشکل عنوان ها و عکس رو بدون مشکل لیست میکنه
مشکل من اینجاست که وقتی بخوام داده های جدید به لیست ویوم اضافه کنم که به ادامه لیست اضافه بشن باید چیکار کنم؟
قطعه کد پایین تعریف لیست ویوم و پاس دادن سه تا آرایه

http://s6.uplod.ir/i/00940/u52rklra04tr.png

اینم کد کلاس CustomList

http://s6.uplod.ir/i/00940/9ka5e9nc8eiq.png

از راهنمایتون پیشاپیش ممنونم

rubiks.kde
چهارشنبه 07 آذر 1397, 08:29 صبح
داده ها رو آداپتوری که ساختید اضافه کنید و در نهایت تابع notifyDataSetChanged را فراخوانی کنید.

هر داده جدید که وارد میشه رو به شی adapter اضافه کنید و تابع بالا که از توابع آداپتور هست رو فراخوانی کنید

farhad_shiri_ex
چهارشنبه 07 آذر 1397, 12:36 عصر
سلام.دوستان من یه کاستوم لیست تعریف کردم. ورودیش سه تا آرایه رشته ای هست.
اولی آرایه ای از id ها
دومی آرایه ای عنوان ها
سومی آرایه url عکس
با این کاستوم لیست ویو که ساختم بدون مشکل عنوان ها و عکس رو بدون مشکل لیست میکنه
مشکل من اینجاست که وقتی بخوام داده های جدید به لیست ویوم اضافه کنم که به ادامه لیست اضافه بشن باید چیکار کنم؟
قطعه کد پایین تعریف لیست ویوم و پاس دادن سه تا آرایه

http://s6.uplod.ir/i/00940/u52rklra04tr.png

اینم کد کلاس CustomList

http://s6.uplod.ir/i/00940/9ka5e9nc8eiq.png

از راهنمایتون پیشاپیش ممنونم

آرایه هایی که به کلاس آداپتر با استفاده از تزریق وابستگی پاس دادید را باید به روز کنید یعنی مواردی که می خواهید تو لیست نمایش بدهید را به این آرایه ها باید اضافه کنید دراینصورت تابع Notify را فراخوانی کنید لیست به روز خواهد شد.
خوب مطمنا دسترسی به این آرایه ها نخواهید داشت چون که به عنوان اعضای خصوصی کلاس تعریف شده اند. بنابراین باید با استفاده از متدهای دسترسی این آرایه ها را به روز کنید ویا از الگوهای طراحی دیگری مانند Observer استفاده کنید که بتونید این آرایه ها را به روز رسانی کنید. البته توجه داشته باشید که برای به روزرسانی آرایه ها آنها را مجددا به سازنده کلاس تزریق نکنید با این کار فشار زیادی به gc آورده می شود.
من خودم معمولا از الگوی observer استفاده میکنم با این کار دیگه نیازی به تعریف متدهای دسترسی ندارم به محض نیاز به تغییر در آرایه هایی که دارم کلاس مشاهده گری که دارم این تغییرات و به روزرسانی را در آداپتر اعمال میکند و البته کپسوله سازی داده های خصوصی هم حفظ خواهد شد.
پس توجه داشته باشید استفاده از متد notify در کلاس arrayAdapter در صورت به روز نکردن آرایه متصل به لیست آداپتر فایده ای نخواهد داشت.