Có bạn có thể.
Trong bộ điều hợp Thêm một Trường mới:
private Context mContext;
Trong bộ điều hợp Constructor, hãy thêm mã sau:
public AdapterName(......, Context context) {
//your code.
this.mContext = context;
}
Trong getView (...) của Bộ điều hợp:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof YourActivityName) {
((YourActivityName)mContext).yourDesiredMethod();
}
}
});
thay thế bằng tên lớp của riêng bạn nơi bạn thấy mã của mình, hoạt động của bạn, v.v.
Nếu bạn cần sử dụng cùng một bộ điều hợp này cho nhiều hoạt động thì:
Tạo giao diện
public interface IMethodCaller {
void yourDesiredMethod();
}
Triển khai giao diện này trong các hoạt động bạn yêu cầu để có chức năng gọi phương thức này.
Sau đó, trong Bộ điều hợp getView (), gọi như sau:
Button btn = (Button) convertView.findViewById(yourButtonId);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
if (mContext instanceof IMethodCaller) {
((IMethodCaller) mContext).yourDesiredMethod();
}
}
});
Bạn xong việc rồi. Nếu bạn cần sử dụng bộ điều hợp này cho các hoạt động không yêu cầu cơ chế gọi này, mã sẽ không thực thi (Nếu kiểm tra không thành công).