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

متد setOnCheckedChangeListener در ListView که به جای آن از setOnClickListener استفاده شده

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

سلام

    داشتم برای دومین بار آموزش 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 باشه !

اگه سوالم رو متوجه شدین لطف میکنین جواب میدین ، اگر هم متوجه نشدین بذارین به حساب اینکه پای این آموزش دیوونه شدم .

ممنون .

میرم یه کم استراحت کنم ، خیلی روم فشار اومد  :)

 برای این سوال پاسخی وجود ندارد.

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