سؤال

لقد ملأت أ ListActivity من Cursor استخدام SimpleCursorAdapter يبدأ نشاط آخر عندما تم النقر فوق أحد العناصر القائمة. أنا أيضا استخدام ViewBinder للقيام ببعض التحول المخصص للبيانات.

أريد أن أضيف CheckBox إلى كل صف في القائمة لذلك قمت بتغيير الرأي وأضاف CheckBox مع الجاذبية الحق.

مضيفا CheckBox أزال القدرة على النقر فوق العناصر. ال onListItemClick طريقة كنت تجاوزت في ListActivity لم يعد يسمى عند الضغط على عنصر قائمة. إزالة CheckBox إصلاح هذا. لماذا هذا؟

أيضا، كيف يمكنني إعداد القائمة بحيث لا يزال أداء وظائفي المطلوبة إذا تم النقر فوق الجزء الرئيسي من عنصر القائمة ولكن لديك وظائف إضافية عند CheckBox في هذا البند يتم التحقق؟ سوف يضع أ onCheckedChangedListener العمل أو هو نفس مثيل الرؤية المستخدمة لكل عنصر في القائمة؟

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

المحلول 2

يشبه SimpleCursorAdapter هو بدائي جدا لما أردت تحقيقه. لقد تحولت إلى التنفيذ CursorAdapter وإعادة عرض جديد باستخدام LayoutInflater في تنفيذي لل newView طريقة.

  public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
  }

في BindView، ثم اضبط مخصص OnClickListener لبلدي الرئيسية LinearLayout ثم آخر OnCheckedChangeListener إلى CheckBox.

لكل هذا للنظر إلى اليمين اضطررت إلى ضبط LinearLayoutخلفية لنظام Android's Menuitem

android:background="@android:drawable/menuitem_background"

نصائح أخرى

كما هو موضح هنا, ، يعمل المستمع انقر فقط إذا لم يكن هناك عرض آخر focusable. وبعد تحديد الخاص بك CheckBox ل focusable="false" يجب أن تفعل الخدعة:

<CheckBox android:focusable="false" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top