はい、できます。
アダプターで新しいフィールドを追加します。
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();
}
}
});
完了です。この呼び出しメカニズムを必要としないアクティビティにこのアダプターを使用する必要がある場合、コードは実行されません(チェックが失敗した場合)。