Evet yapabilirsin.
Adaptörde Yeni Alan Ekle:
private Context mContext;
Bağdaştırıcı Oluşturucu'da aşağıdaki kodu ekleyin:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
Bağdaştırıcının getView [...) kısmında:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
kodunuzu, aktivitenizi vb. gördüğünüz kendi sınıf isimlerinizle değiştirin.
Aynı adaptörü birden fazla aktivite için kullanmanız gerekiyorsa, o zaman:
Bir Arayüz Oluşturun
public interface IMethodCaller {
void yourDesiredMethod();
}
Bu arabirimi, bu yöntem çağırma işlevine sahip olmak için ihtiyaç duyduğunuz etkinliklere uygulayın.
Ardından Adaptör getView () 'da şu şekilde çağrı yapın:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Bitirdiniz. Bu bağdaştırıcıyı, bu çağrı mekanizmasını gerektirmeyen etkinlikler için kullanmanız gerekirse, kod çalışmayacaktır (kontrol başarısız olursa).