متد setOnCheckedChangeListener در ListView که به جای آن از setOnClickListener استفاده شده
سلام
داشتم برای دومین بار آموزش ListView رو میدیدم ( چون دفعه اول خوب متوجه نشدم ) که یهو تو دقیقه 50 الان دو ساعته گیر کردم . اگه کسی فهمیده یه توضیحی بده اگر هم باید حفظ کنم که هیچی . استاد فرمودند :
" مثلا اگه برای Title7 تیک بزنیم ، و بعد اسکرول کنیم تا Title7 از صفحه بیرون بره ، اگه دوباره برگردیم ، Title7 تیک ش برداشته میشه . علتش اینه که متد setOnCheckedChangeListener زمانی روی میده که نه تنها ما روی کنترل تیک میزنیم ، بلکه اگه خود سیستم هم این کارو بکنه اتفاق میفته . یعنی مثلا اون کنترل وقتی بهش میگیم :
chkDone.setChecked(false);
متد setChecked باعث به روزرسانی متد setOnCheckedChangeListener میشه و بعد آیتم false میشه " .
حالا سوالم اینه :
1 - آیا منظور اینه که Title7 هنگام پدیدار شدن تیک میخوره ، ولی سیستم دوباره توسط setOnCheckedChangeListener تیک رو بر میداره ؟
2 - استاد چرا در کد بالا حالت false رو مثال زدن ؟؟!!! وقتی که Title7 در آرایه تیکش true شده ، وقتی که برگردیم و دوباره بخواد اطلاعات رو از آرایه بخونه ، item.done مقدارش true هست ، و این کد :
chkDone.setChecked(item.done);
یعنی :
chkDone.setChecked(true);
پس چرا استاد حالت false رو مثال زدن ؟!
3 - بر فرض هم که متد setOnCheckedChangeListener توسط سیستم دوباره فراخوانی بشه ، قرار نیست که مقدار true رو false کنه ! یعنی برای Title7 دستور :
chkDone.setChecked(item.done);
باعث میشه که هنگام ظاهر شدن تیک بخوره ، حالا چون مقدار Check تغییر کرده متد setOnCheckedChangeListener با پارامتر checked = true فراخوانی میشه ، پس item.done هم true میشه و رنگ متن قرمز میشه پس نباید نیازی به متد setOnClickListener باشه !
اگه سوالم رو متوجه شدین لطف میکنین جواب میدین ، اگر هم متوجه نشدین بذارین به حساب اینکه پای این آموزش دیوونه شدم .
ممنون .
میرم یه کم استراحت کنم ، خیلی روم فشار اومد :)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .