مشكل در يادگيري List View
سلام خدمت دوستان .
راستش من نميتونم درس ليست ويو رو ياد بگيرم همونطور كه استاد توي فيلم ميگن بيشتر كدها كليشه اي هستن و من كلا بايد مطلب رو درك كنم تا يادش بگيرم
اگه ميشه به كمك كنيد و از تجربيات يادگيري خودتون برام بگيد واقعا به مشكل خوردن توي بحث ليست ويو .
با تشكر
بله شما یه چن بار دیگه نیگا کن یه سری چیزایی رو ازش یاد میگیری (حداگثر 3 بار). بعد ازش رد شو به مرور وقتی بهش نیاز پیدا کردی برات عادت میشه و هضم میشه. نگران نباش البته الان ریسایکر ویو جایگزین شده. برو یه سرچی بکن حتما یاد میگیری موفق باشی لینک
با سلام خدمت شما دوست عزیز
از اونجایی که من خودم تازه کارم و دقیقا مثه شما بدون درک چیزی اونو یاد نمیگیرم 3 4 روز سر یادگیری List View وقت گذاشتم و تقریبا یه چیزایی دستگیرم شد. اونارو بهتون میگم امیدوارم براتون مفید باشه :)
برای نمایش آیتم (imageview, string, int , ...) در List View از Adapter استفاده میشه و وقتی شما میخواین مجموعه ای از این آیتم ها رو به دلخواه خودتون در List View نمایش بدین چاره ای ندارین جز اینکه Adapter مخصوص به خودتون رو تعریف کنید. کلاس Adapter خودتون رو میسازید و اون رو از ArrayAdapter ساختار خودتون extends می کنید. بعدشم که constructor اش رو میسازید. یه کلاس درونی ام میسازید به اسم ViewHolder. حالا متد getView رو override می کنید؛ خب الان میگید اگه convertView خالی بود یه دونه از رو فایل xml ای که ساختم برام inflate کن یعنی چی؟ این convertView ها همون الوار ها هستن (که استاد تو ویدئو اشاره میکنن) که تعداد اونها حداکثر تعداد سطرایی هس که تو صفحه نمایش emulator جا میشه (که مشخصا بستگی به طراحی و ارتفاع اون فایل xml شما داره)، اونجوری که من فهمیدم تا زمانی convertView خالیه که حداکثر سطرای ممکن از این فایل xml شما ساخته شن (مثلا 8 تا یا 7 تا بستگی به اندازه دستگاه یا emulator داره اگه اشتبا نکنم!) هر کدوم از این convertView ها که ساخته میشه میریزیمش تو یه holder (برای اینکه بتونیم با آیتمای خودمون پرش کنیم!) و برای هر کدوم یک Tag ست میکنیم یعنی انگار convertView هامون رو شماره گذاری میکنیم که وقتی به طور کامل ساخته شدن (همون حداکثر تعداد سطرا) بتونیم به هر کدومشون دسترسی داشته باشیم مثلا بگیم convertView شماره فلان رو پر کن. بعد از این holder خودمون رو پر می کنیم. پس اتفاقاتی که در متد getView میفته :
1- ساخت یک holder
2- گرفتن item مورد نظر (Adapter شما ورودیش یک ArrayList هست، item های موجود در ArrayList هر کدوم یک position دارن 0و 1 و2 و ... و وقتی متد getView صدا زده میشه اگه مثلا ماکزیمم 8 تا convertView ساخته بشه position های 0 تا 7 ArrayList در List View نمایش داده میشن و با Scroll کردن item های position های بعدی! )
3- اگر convertView خالی بود:
- از فایل xml مورد نظر یک convertView برام inflate کن به کمک inflater
- convertView رو بریز داخل holder
- یک Tag برای convertView ست کن
4- در غیر این صورت:
-از convertView های قبلی convertView شماره (Tag) فلان رو بریز تو holder
5- holder رو پر کن؛ با چه Adapter ی؟ همین Adapter ، با چه item ی؟ همون item ی که در قسمت 2 گرفتی! position ام که مشخصه!!
6- return convertView
کلاس ViewHolder هم هر convertView یی رو که میگیره به کمک constructor اش اشیای موجود در اون رو شناسایی میکنه و به کمک متد fill اون رو پر میکنه.
موفق باشید :)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .