إنشاء أزرار حيوي هل يمكنني اختيار واحد وإلغاء الآخر الأزرار ؟

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

سؤال

أنا إنشاء أزرار حيوي ...

for(int i=0; i<colSize;i++){
    final Button btn = new Button(this);    
    btn.setText(SectionName[i]);        
    btn.setTextSize(10);
    btn.setPadding(8, 3,8, 3);   
    btn.setTextColor(Color.WHITE);
    btn.setTypeface(Typeface.SERIF, Typeface.BOLD);

    btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {               
            //***Every time that I click my button is selected !:)
            btn.setSelected(true);      
        }                   

     });  

    }

ولكن كيف يمكنني إلغاء الأزرار الأخرى التي تم اختيارها ، أريد فقط زر واحد مختارة!:)

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

المحلول

وتعريف متغير لتخزين رقم للزر النقر ::

private int EnabledButton;

وتعيين معرف على كل زر عندما يتم إنشاؤها ::

btn.setId(i);

وأو علامة ::

btn.setTag(i);   

وبعد ذلك في أن المستمع الحصول على "EnabledButton"، واستدعاء دالة لإلغاء الأزرار الأخرى ::

 btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {                 
        EnabledButton=btn.getId();
        DeselectButtons();        
        btn.setSelected(true);      
    }                   

 });  

وظيفة لإلغاء أزرار أخرى ::

public void DeselectButtons() {
    for(int i=0; i<NumberofButtons;i++){            
                    if (EnabledButton!= i)
        this.findViewById(i).setSelected(false);
    }           

}

نصائح أخرى

  1. إن الطريقة الوحشية (يعمل إذا كان لديك عدد قليل من الأزرار) - حفظ زر المراجع وخلق خاصة الطريقة التي الحلقات من خلال الأزرار الخاصة بك وإلغاء تحديد مرة واحدة لا تحتاج
  2. تمديد زر الطبقة وجعلها الاستماع حدث مخصص الذي تم إنشاؤه عند واحد من الأزرار النقر
  3. نظرة على RadioGroup تنفيذ
  4. تباين #1.بدلا من إنشاء منفصلة المستمعين على الأزرار الخاصة بك إنشاء واحد فقط وإعادة استخدامها لجميع الأزرار.تمديد هذا المستمع من OnClickListener و إضافة قائمة الميدانية.في كل مرة تقوم بتعيين المستمع إلى الزر زر إضافة مرجع إلى تلك القائمة.الآن, عندما onClick يتم تشغيل ببساطة حلقة من خلال قائمة تعطيل "الآخر" أزرار
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top