2013-03-25 3 views
8

मैं एक लेआउट पर 4 बटन, और बटन से प्रत्येक के लिए, वे विशेषता समानता के लिए दो दृश्य की तुलना दृश्य मेरी गतिविधि (जो एक लेआउट 4 बटन है कि का उपयोग करता है), मैं की तरह कुछ है:एंड्रॉयड

public class Blah extends Activity{ 
    String fileName; 
    Button one; 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_number_players_selection_screen); 
     one = (Button) findViewById(R.id.number_players_one); 
    } 


    public void numberChosen(View v){ 
     if(v == one){        // <-------- first way 
      System.out.println("first way");  
     } 
     if(v.getId()==R.id.number_players_one){ // <-------- second way 
      System.out.println("second way"); 
     } 
    } 
} 

अगर आप क्या विधि numberChosen में होता है को ध्यान में रखना, इन दो तरीकों के बीच है, जो एक बेहतर है? या वे दोनों एक ही काम कर रहे हैं?

एक तरफ नोट पर, android:onClick="numberChosen" कर रहा है View.onClickListener बस इसके बजाय किसी भी बेहतर या बदतर है?

+2

दूसरा तरीका की तुलना द्वारा हल (केवल मेरी सूची एडाप्टर की पहली पंक्ति के लिए काम करते) कुछ मामलों में काम नहीं कर रहा पहले की तुलना में अधिक बेहतर दृष्टिकोण है। इसके अलावा आप Blah क्लास में iClickListner भी लागू कर सकते हैं (यानी आपकी गतिविधि) –

उत्तर

4

मेरे दृष्टिकोण से, दोनों तरीके सही हैं, वे काम पूरा कर रहे हैं। प्रदर्शन बिंदु दृश्य से, दूसरा तरीका बेहतर हो सकता है।

इसके अलावा, कुछ की तरह का सुझाव दिया, स्विच मामले का उपयोग कर यदि आप, एडीटी 14 या अधिक प्रयोग कर रहे हैं एक पुस्तकालय परियोजना में संभव नहीं हो सकता है, क्योंकि आईडी नहीं अंतिम (स्थिरांक) कर रहे हैं, तो आप का उपयोग करने के अगर उस मामले में केवल बयान।

0
public class Blah extends Activity implements OnClickListener{ 
       String fileName; 
       Button one; 
       @Override 
       public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_number_players_selection_screen); 
        one = (Button) findViewById(R.id.number_players_one); 

one..setOnClickListener(this); // way 1 to do that 

    // more better way would be customized for whole app 

    **one..setOnClickListener(new MyClickListener());** 
       } 


      /** The click event observer pattern for the different items on the view 
       * 
       * @see android.view.View.OnClickListener#onClick(android.view.View) 
       */ 
       @Override 
       public void onClick(View v) { 
        switch (v.getId()) { 
        case R.id.number_players_one: 

         // best way 1 
         break; 
      default : 
      break; 
      } 

      } 

      } 

एक और अधिक कस्टम कार्यान्वयन आप एप्लिकेशन में विभिन्न वर्गों के लिए एक स्वनिर्धारित श्रोता हो सकता है के रूप में:

public class MyClickListener implements OnClickListener { 
    private Context mContext; 
    @Override 
    public void onClick(View v) { 
     mContext = v.getContext(); 

     switch (v.getId()) { 
     case R.id.number_players_one: 

     // best way 2 and more better among all 
      break; 

     default: 
      break; 
     } 
    } 


} 
0

मैं तुम्हें switch मामला इसकी अधिक readable.Its उपयोग करने के लिए मौसम कोई फर्क नहीं पड़ता का सुझाव आप android:onClick="numberChosen" या View.onClickListener()

2

मैं मिनट एसडीके 14 का उपयोग कर रहा है और इस समाधान

findViewById(R.id.item_icon_favourite) == view 

आईडी से

R.id.item_icon_favourite == view.getId()