سؤال

لدي ListView مدعومة مخصصة ArrayAdapter حيث كل بند 2 LinearLayouts - واحد اتصل الرأس والآخر الجسم.الجسم هو مخفي (ذهب) حتى ينقر المستخدم على التوالي في الوقت الذي تنزلق.النقرة الثانية (على رأسه) سوف إخفاء الجثة.ومع ذلك إذا كان المستخدم بالنقر على الجسم فإنه يجلب نشاط آخر.كل هذا يعمل على ما يرام, هنا تأتي المشكلة:

عندما يضغط المستخدم على هيئة أريد إشارة مرئية من العمل بنفس الطريقة العادية القائمة البند سوف وميض برتقالي الخلفية عند الضغط عليه.أنا لا تحصل على هذا افتراضيا منذ (نظريتي) في onPress الحدث هو اعتراضها من قبل هيئة الرأي وليس معالجتها من قبل عنصر القائمة.

أول شيء حاولت تنفيذ body.setBackground('#ff00ff') (لا يهم لون) في onPress الحدث.التي لم تعمل منذ (أظن) لا يوجد طلاء بعد المكالمة.ثم أحفر أكثر قليلا وقرر استخدام <selector/>على أساس الخلفية.تعريف body_background.xml في drawable المجلد تعيين هذا الجسم الخلفية الملكية.

هناك لاحظت أن الخلفية لن تتغير إلا إذا حتى تتم معالجتها من قبل القائمة.على سبيل المثال إذا كنت تعيين <item android:state_selected="true" android:drawable="@drawable/selected"/> ثم عندما اضغط على الرأس الخلفية من كل العناصر (الرأس والجسم) سوف تتغير ، ولكن عندما اضغط على الجسم - لا شيء.

لتلخيص سؤالي - كيف يمكنني تغيير خلفية الطفل عنصر في القائمة البند إذا كنت تعيين مخصص onClick معالج ؟ أي تلميحات سوف يكون موضع تقدير كبير

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

المحلول

موافق.هنا بعض مزيد من المعلومات أحفر على طول الطريق.

  1. أنا حاليا أحاول أن التبديل تنفيذ ExpandableListView التي توفر وظائف اضطررت إلى مشفرة في (انزلاق الجسم).المشكلة أنني قد هنا هو أن لدي الهوى "لا نهاية لها" قائمة التنفيذ و أنا باستخدام ArrayAdapter#إضافة أسلوب حيوي إضافة عناصر إلى قائمة أثناء التمرير (انظر بلدي البرنامج التعليمي على androidguys.com) حسنا ، add طريقة مفقود من BaseExpandableListAdapter لذلك أريد أن أرى إذا كان إضافة العناصر الداخلية مجموعة العمل (لم يكن على ArrayAdapter) ربما تفعل ExpandableListView#notifyChanged() سوف تأخذ الرعاية من ذلك
  2. حقيقة أنا لا أرى أي شيء عندما أكون مباشرة باستخدام setBackgroundColor طريقة ربما يرجع إلى اللاحق الدعوة إلى startActivity ندعو أن يوقف كل اللوحة حتى النشاط الجديد هو عرض

P. S.هذا وقد تم حلها عن طريق التحول إلى ExpandableListView.و قد أضيف - انها جميلة!لا تحتاج إلى اختراع أي شيء

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