हाँ तुम कर सकते हो।
एडेप्टर में एक नया फ़ील्ड जोड़ें:
private Context mContext;
एडेप्टर कन्स्ट्रक्टर में निम्न कोड जोड़ें:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
एडाप्टर के getView (...) में:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
जहाँ आप अपना कोड, अपनी गतिविधि आदि देखते हैं, अपने स्वयं के वर्ग नामों से बदलें
यदि आपको एक से अधिक गतिविधियों के लिए इसी एडाप्टर का उपयोग करने की आवश्यकता है:
एक इंटरफ़ेस बनाएँ
public interface IMethodCaller {
void yourDesiredMethod();
}
गतिविधियों में इस इंटरफ़ेस को लागू करने के लिए आपको इस पद्धति को कॉल करने की कार्यक्षमता की आवश्यकता होती है।
फिर एडॉप्टर में getView (), जैसे कॉल करें:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
आप कर चुके हैं। यदि आपको इस एडाप्टर को उन गतिविधियों के लिए उपयोग करने की आवश्यकता है जिनके लिए इस कॉलिंग तंत्र की आवश्यकता नहीं है, तो कोड निष्पादित नहीं होगा (यदि चेक विफल रहता है)।