그래 넌 할수있어.
어댑터에서 새 필드 추가 :
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();
}
이 메소드 호출 기능이 필요한 활동에서이 인터페이스를 구현하십시오.
그런 다음 Adapter 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();
}
}
});
완료되었습니다. 이 호출 메커니즘이 필요하지 않은 활동에이 어댑터를 사용해야하는 경우 코드가 실행되지 않습니다 (확인에 실패한 경우).