안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요 notifyDataSetChanged()에 대하여 질문드립니다.
현제 구조는
커스텀뷰를 이용한 리스트를 구성하였습니다.
리스트 클릭시 커스텀 다이얼로그가 뜨고 거기서 이름 변경하고 수정버튼 클릭시 notifyDataSetChanged()<--를 작동하게 하려는데요
notifyDataSetChanged()이거 자체가 어댑터를 상속받아서 작동하는건데~~
이걸 변수로 넘길 방법이 없어서 문의드립니다.
baseadapter를 상속받은 클래스에서는 잘작동하지만
상속받은 클래스안에서 클릭 메소드가 있고 거기서 클릭하면 다이얼로그가 뜨는 구조라
baseadapter<--이넘을 다이얼로그에 가져갈 방법이 뭐가있을까요?
Dialog에 있는 버튼을 누르면, 콜백되는 Listener를 등록해야 합니다.
커스텀 다이알로그를 생성하셨다면, Dialog를 생성시 수정버튼이 눌리면 호출되는 Listener를 등록하도록 하세요.
물론 커스텀 다이알로그이기 때문에 이 메소드는 직접 구현하셔야 합니다.
그리고 수정 버튼이 눌리면 등록한 Listener를 호출해 줍니다.
그러면 Dialog를 생성했던 클래스쪽에서는 BaseAdapter에 접근을 할 수 있기 때문에 notifyDataSetChanged()를 호출 할 수 있습니다.
간략히 예제를 써보면...
[Dialog]
private View.OnClickListener mOnYesClickListener = new View.OnClickListener() {
public void onClick(View v) {
if (mYesClickListener != null) {
mYesClickListener.onClick(v);
}
}
};
public void setYesClickListener(View.OnClickListener listener) {
mYesClickListener = listener;
}
[Activity]
private AdapterView.OnItemClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
CustomDialog dialog = new CustomDialog(mContext);
dialog.setYesClickListener(new View.OnClickListener() {
public void onClick(View v) {
mListAdapter.notifyDataSetChanged();
}
});
dialog.show();
}
};