15

افضل طريقة لاضافة زر في ListView والاستماع عليه

مرحبا ,,

حاليا اقوم بتطوير تطبيق, ولا اعرف اذا كانت فكرتي هي الأفضل ام لا!

لدي ListView و فيها السطر يحتوي على زر ونص عند الضغط على الزر مثلا يضاف Row "اقصد المحتوى" الى قاعدة البيانات.

طريقتي,,

public class MyAdapter extends BaseAdapter{
    private Clicklistener listener;
    .......

    public void getView(int position, View convertView, ViewGroup parent) {
        .....
        button.setOnClickListener(listener)
        ....
    }

    public void setClickListener(Clicklistener clickl){
        ....
    }

    .....
}

ملاحظة -- قد يكون هناك اخطاء بالكود مثل كتابة اسم class خطا.

السبب ,, نظام arabio استفزني.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

13

طالما أنشأت handler واحد فقط لجميع الأزرار بداخل ال ListView ، يجب عليك إيجاد طريقة لتعرف ما هو رقم ال position في ال ListView الذي يحوي الزر الذي تم الضغط عليه. وذلك حتى تتمكن من إستعادة المعلومة التي تريد حفظها.

يمكنك الإستفادة من الدالة setTag/getTag:

في دالة getView

.....

button.setTag(position)

button.setOnClickListener(listener)

....

وفي دالة onClick

int position = (Integer) view.getTag();

Object item = getItem(position);

// save item

اعرف ذلك :)

انا فقط اردت معرفة اذا كان هناك طرق جديدة للاستماع على الازرار :)

يمكنك استخدام موقع

لتبادل قصاصات الكود.

كذلك فضلا اذكر أن السؤال عن android

الودجة listView تستخدم لعرض صفوف عديدة منسجمة (من نفس النوع) تأتي من قاعدة بيانات أو من خدمة ويب ...إلخ ويمكن أن تمتد وتزيد.

البيانات التي تغذي كل صف تأتي من adaptor في حين تأتي الصفوف عبر دالة getView فيها كي تقوم بنفخ شظية fragment inflation

ويمكن معرفة رقم الصف ومحتواه من بيانات عبر adapter.getItem

/muayyad-alsadi/8134064

انظر

اعرف ذلك :)

النقاش هنا ما اذا كان هناك طرق افضل للاستماع على الازار.

وشكرا على ردك

هناك 3 طرق وهي وضع onClick في XML أو setOnClickListener على الزر أو setOnItemClickListener على listView كاملة.

يمكنك استلام معلومات عبر veiw.getTag أو adapter.getItem(pos)

أين من هذه هو الذي تسأل عنه؟

طريقتك واضحة وسهلة، ولكن تأكد من أن الدالة setClickListener يتم مناداتها من UI-Thread فقط أو استخدم volatile على المتغير listener إذا أردت استخدام الدالة من ثريد أخرى.

اهلا اخي,,

لدي سؤال ,, متى ساحتاج طريقة اعقد ؟

شكرا على التنبيه بخصوص volatile