آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوالی درباره متد fill در اموزش list view اوستاد

hojjat  10 سال پیش  10 سال پیش
0 0

سلام دوستان عزیز . میخواستم یکم این متد fill را واسم شفاف سازی کنید راستش اصلا نمیفهمم کی و چندبار اجرا میشه و وقتی اسکرول میکنیم چند بار اجرا میشه ؟ اصلا از اولین خط تا اخرین خط اجرا میشه؟ گیج شدم. اخه یه کلیک برای یه چک باکس گذاشتم هربار کلیک میشه رنگ مثلا متن یک تکست عوض شه ولی اگر توی متد fill تعریف کرده باشم به صورت chkdon.setchecked(item.done) انوقت هر بار اسکرول کنم و برگردم بازم تیک چک باکس هست ولی اگر این دستور را نزاشته باشم هر بار به پایین اسکرول کنم چندتا از چک باکس ها نیز تیک خورده هستند و باقی میمانند من توی این قسمت هنگ شدم اگر ممکن دوستان یه توضیح کامل بدند چطور این اتفاق میفته ممنون میشم واقعا.

0 0
متد getView متعلق به کلاس ArrayAdapter هست و خود سیستم اتوماتیک اونو صدا میزنه و متد fill متعلق به کلاس ViewHolder هست و خودمون اونو مینویسیم...چون متد fill رو در بدنه متد getView صدا میزنید در نتیجه هربار با اجرای متد getView متد fill هم یکبار اجرا میشه.... (10 سال پیش)
0 0
ممنون اقا مسعود. پس اینطور که معلومه مشخص نیست که متد fill چند مرتبه اجرا میشه منظورم اینه تعداد اجراهاش مشخص نیست؟ (10 سال پیش)
0 0
نه مشخص نیست(هربار که یکی از ویوهای لیست(به قول استاد:الوارها) از صفحه خارج میشه متد getView صدا زده میشه و درون این متد،متد fill هم اجرا میشه و چون مشخص نیست که کاربر چندبار میخواد اسکرول بالا و پایین کنه پس تعداد اجراهای این متد هم مشخص نیست....تعداد اجراهاش به چه دردتون میخوره؟؟ (10 سال پیش)
0 0
تعدادش واسم مهم نیست.فقط اینکه من یه دستور کلیک چک باکس درون این متد fill گذاشتم و گفتم هر موقع چک باکس کلیک شد رنگ متن عوض شه و اولین سوالم اینه وقتی هر بار کلیک میکنم ایا فقط قسمت دستورات کلیک چک باکس اجرا میشه یا اگر دستورات دیگه ای هم داخل متد fill باشه اجرا میشه؟ سوال بعدی اینکه چرا وقتی چک باکسی را کلیک کردم وقتی از صفحه خارج میشه و دوباره با اسکرول بر میگرده دوباره همچنان کلیک خورده باقی میمونه چون من در قسمت کلیک چک باکس دستور ischecked را به chkdone.item نسبت دادم ایا هر بار اسکرول میشه این مقدار که داخل دستور کلیک چک باکس اجرا میشه در حالی که هنوز ما روی چک باکس کلیک نکردیم ؟ اینه که گیجم کرده اساسی (10 سال پیش)
0 0
اولین سوالتون:بله فقط دستورات قسمت کلیک چک باکس اجرا میشن و بقیه دستورات خارج از این بلوک اجرا نمیشن......سوال بعدیتون:خیر با هربار اسکرول دستورات قسمت کلیک چک باکس اجرا نمیشن.این دستورات فقط زمانی که روی چک باکس کلیک میشن اجرا میشن....و در مورد کلیک خورده باقی موندن چک باکس باید بگم که ویوهای لیست وقتی از صفحه خارج میشن و دوباره وارد میشن،از اول ساخته نمیشن بلکه دقیقا همون ویوی قبلی (با استفاده از آدرسش که در قسمت سازنده ی کلاس ViewHolder ذخیره اش کردیم) دوباره مورد استفاده قرار میگیره.. و اگه چک خورده یا نخورده باشه به همون صورت میمونه....کدهای مربوط به نسبت دادن isChecked به item.chkDone رو در بدنه متد fill هم کپی کنید تا علاوه بر زمان کلیک با هربار اسکول هم اجرا بشن..نتیجه کارتون رو بگید... 1.کدهای کلاس آداپترتون رو قرار بدید تا اگه مشکل داره اصلاح کنیم 2.مبحث لیست ویو رو یکبار دیگه از اول تا آخر و با دقت ببینید (10 سال پیش)
0 0
خیلی ممنون اقا مسعود واقعا خیلی بکمک کردید به فهمم چشم انشا... رفتم سر سیستم اینکارا انجام میدم اگه مشکلی بود کدها را میفرستم.ممنون (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hojjat  10 سال پیش
0 0

نمیدونم چرا سوالم نیومد مجبور شدم اینجا بزارم .     ببخشید وقتتون خیلی گرفتم.یه سوال دیگه اینکه من یه toast قرار دادم وقتی اسکرول میشه مقدار chkdone را نمایش میده و اینکه مثلا من ۳ تا چک باکس در ۳ تا الوار ها که در صفحه هستند کلیک میکنم هر بار این الوار ها را یکی یکی از صفحه خارج میکنم و اسکرول به پایین میکنم پیغام toast مقدار false میده ولی وقتی اسکرول به بالا میکنم و یکی یکی همون الوارها که چک باکس های کلیک شده بودند را وارد صفحه میکنم اینبار پیغام true میبینم. برای همین بود که پرسیدم ایا با هر بار اسکرول دستورات داخل کلیک چک باکس اجرا میشند یا نه چون داخل متد fill دستوری مبنی بر تغییر chkdone نزاشتم و فقط داخل کلیک چک باکس که گذاشتم item.done=checkbox.ischecked و داخل متود fill گذاشتم chkdone.setchecked(item.done( حالا اگه سوالم واضح نیست ظهر انشا... کدهای اداپتر را میزارم ممنون

0 0
متد fill فقط برای پر کردن ایتم های موجود در الوار های شما است مثلا اگر چک باکس دارید ومقدار ان را تغییر می دهید چون با اسکرول کلا اون ایتم از بین می رود ودوباره ساخته می شود باید تغییرات رو ذخیره کنید.تا در دفعه بعد که ساخته می شود با تغییرات شما ساخته بشه. (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .