यदि सभी बटनों में समान कार्यक्षमता होती है जो केवल पैरामीटर में भिन्न होती है, तो यह एक श्रोता बनाने और सभी बटनों को असाइन करना बेहतर होता है।
श्रोता का स्थान उन चर के दायरे पर निर्भर है जो इसे उपयोग करने की आवश्यकता है। यदि इसे कुछ विधि चर का उपयोग करने की आवश्यकता है, तो इसे विधि के अंदर बनाया जाना चाहिए, यदि यह कक्षा के सदस्यों का उपयोग करता है, तो इसे कक्षा के अंदर बनाया जाना चाहिए।
उदाहरण के लिए, यदि आप दस बटन है कि प्रत्येक एक अलग गतिविधि शुरू कर देना चाहिए है, तो आप विचारों और गतिविधियों का एक नक्शा उचित गतिविधि शुरू करने के लिए बना सकते हैं और श्रोता में निधि:
Map<View, Class<?>> viewActivityMap = new HashMap<View, Class<?>>();
// fill it somewhere
// in onCreate
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Class<?> classToStart = viewActivityMap.get(v);
Intent intent = new Intent(YourActivity.this, classToStart);
startActivity(intent);
}
}
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
मामले में श्रोताओं का, एकमात्र असली कारण जो मैं एक आंतरिक वर्ग बनाने के लिए देखता हूं, यह है कि यदि आप एक कन्स्ट्रक्टर बनाना चाहते हैं जो कार्यान्वित वर्ग/इंटरफेस कन्स्ट्रक्टर से अलग पैरामीटर प्राप्त करता है।
जो कुछ भी आपको उपयुक्त बनाता है !! ... यदि आप एक अच्छी तरह से संरचित कोड चाहते हैं, तो मैं एक नामित आंतरिक वर्ग के लिए जाने का सुझाव दूंगा ... –