تعمل طريقة عرض الطاولة في Android كطريقة عرض قائمة

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

  •  20-09-2019
  •  | 
  •  

سؤال

أنا أستخدم تخطيط الجدول لعرض البيانات ، لكنني أريد أن يتصرف مثل عناصر القائمة (القدرة على تحديد ، عند تحديد تغيير الخلفية ، عند النقر فوق تأثير ، انقر فوق "قادر) لهذا الغرض ، أنا أستخدم المستمعين التاليين

  • OnClickListener(to perform action)
  • OnFocusChangeListener(To change background color)
  • OnTouchListener(to focus specific row)

المشكلة الآن هي عندما يلمس المستخدم أي عنصر، فإنه يحصل على التركيز أولاً ثم يضطر إلى اللمس مرة أخرى لإطلاق حدث عند النقر، ولإصلاح هذا قمت بإجراء تغيير وقمت بتشغيل إجراء على صف محدد.

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() != MotionEvent.ACTION_UP){
        v.requestFocus();
        int viewId= v.getId();
        handleEvent(viewId);//Switch cases to perform row specific actions.
    }
    return false;
}

الآن، إذا لمس المستخدم حدث الصف، فسيتم طرده، وهذا يعمل بشكل مثالي، ولكن تظهر مشكلة أخرى هنا عندما يريد المستخدم التمرير لأسفل البيانات عبر سحب الإصبع على الشاشة ontouch حدث طرد ....ويتم تنفيذ الإجراء تلقائيًا على الرغم من اعتقاد المستخدم بذلك scroll down الشاشة.

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

المحلول

لا أعرف ما إذا كان هذا الحل قابلاً للتطبيق في حالتك، ولكن ربما يمكنك القيام بذلك على النحو التالي:لنفترض أن المستخدم قام بالنقر فوق العنصر الخاص بك (لذلك ربما ستحصل على تسلسل من ثلاثة أحداث لطريقة OnTouch() الخاصة بك:ACTION_ DOWN وACTION_ MOVE (ليس بالضرورة) وACTION_UP.الآن يمكنك الرد وفقًا لذلك.

  1. إذا كان ACTION_DOWN، فيمكنك حفظ إحداثيات x وy.
  2. إذا كان ACTION_MOVE، فخذ x وy واحسب المسافة من ACTION_DOWN المقابلة.إذا كانت أطول من بعض القيمة المفترضة، فقم بالتمرير وقم بتعيين العلامة التي تشير إلى أنه تم تمرير العناصر.
  3. إذا كان ACTION_UP، فتحقق من علمك.إذا لم يتم تمرير العناصر، فقم بتشغيل الإجراء الخاص بك وقم بإلغاء تحديد العلامة.

من المحتمل أن العمليات الحسابية ليست هي ما يجب عليك القيام به في حدث ACTION_MOVE، لأنه يجب أن يكون سريعًا، ولكن جربه.
يعتبر!

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