قمت بإصلاح رمز Android الخاص بي ولكني أريد أن أعرف ما هو الخطأ في الإصدار القديم

StackOverflow https://stackoverflow.com//questions/21005728

سؤال

لدي قائمة شيكلة تحتوي على TextView وأضفت عرضة للعناية إلى محول الخاص بي وفي هذا العطل قمت بإضافة مستمع الحالة Onchecked إلى خانات الاختيار الخاصة بي وفي المستمع الذي onchecked State، كتب هذا الرمز:

giveacodicetagpre.

ولكن مع هذا الرمز عندما يتم التحقق من خانة الاختيار الخاصة بي، تم حفظه في قاعدة البيانات، عند ذلك، عند التمرير عبر ListView، لا يتم التحقق من عدم التحقق من كافة خانة الاختيار التي لا يتم تحديدها وإلغاء تحديدها وحفظها في قاعدة البيانات.

لذلك قمت بإصلاحها بإضافة مستمع OnClick إلى مربع الاختيار بدلا من مستمع Onchange State:

giveacodicetagpre.

وليس لدي مشكلة أكثر.لكنني أردت أن أعرف لماذا عمل هذا المستمع الحكومي هذا الطريق بهذه الطريقة؟

هل كانت مفيدة؟

المحلول

لديك هذا checkbox داخل ListView ك listview reuses عرض وجهات النظر الكفاءة قد يتم توفير كائن خانة الاختيار نفسها إلى عناصر قائمة ListView وعندما يتم التحقق من خانة الاختيار نفسها غير محددة لآخر.

نصائح أخرى

تصرف مستمع State This State هذا بطروح عند ذلك فقط عند التمرير إلى قائمة ListView لأن مكالمة GETVIEW مرة أخرى والتي تغير حالة تحديد خانة الاختيار المحددة، فلن تقوم CheckThangedLostner بإجراء تغيير القيمة في قاعدة البيانات.وعندما استخدمت OnClick مشكلتك التي تم حلها لأنك تقوم بتغييرات ListView View OnClick Inclick ليست حرائق لا تتغير قيمة قاعدة البيانات الخاصة بك.

يمكنك حل هذه المشكلة باستخدام Viewholder في ListView.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top