안드로이드 개발중 ListView에 웹에서 가저오는 데이터 띄워주는 동안 동글뱅이 돌아가면서 '잠시만 기다려주세요'라는 메시지를 보여주려다 수십차례 삽질을 했습니다..
webview에서 로딩할 때는 간단하게 되는데 ListView에서 ProgressDialog를 사용하려니까 잘 안되더라구요.
뭐 삽질은 했지만 다른 분들에게 많은 도움을 받았기에 나와 같은 고민을 하고 있는 분이 혹시라도 있으면 조금이나마 도움이 되고자 포스트 합니다.
아래 WatingDialog 클래스로 만들어 봤습니다. 사용법은
WatingDialog waitingDialog = new WatingDialog(context);
waitingDialog.startWaitingDialog("대기 중 보여줄 메시지");
이렇게 WatingDialog 객체를 new해서 startWaitingDialog를 하면 다이얼로그가 보여집니다.
그리고 끝나는 시점에서 waitingDialog.dismissWaitingDialog();를 호출해주면 다이얼로그를 Dismiss할 수 있습니다.
ListView 같은 경우에는 Adapter 에서 getView메소드 마지막 view객체를 return하기 전에 불러주면 다이얼로그가 닫아집니다.
이렇게 만들려면 waitingDialog 객체를 클래스객체로 선언해야 하는데 더 좋은 방법이 있는지는 잘 모르겠습니다.
혹시 더 좋은 방법이나 잘못된 부분을 지적해 주시면 많은 도움이 되겠습니다~ 그럼^^;
public class WatingDialog{
private Context mContext;
private Handler prgressHandler = new Handler() {
public void handleMessage(Message msg) {
//특별히 msg에 대한 처리는 하지 않음.
watingDialog.dismiss();
}
};
ProgressDialog watingDialog;
public WatingDialog(Context context)
{
mContext = context;
}
/**
* < WaitingDialog 를 멈추기 위한 메서드. >
*
* @author [찌빠]
*/
public void dismissWaitingDialog(){
Message msg = prgressHandler.obtainMessage();
prgressHandler.sendMessage(msg);
}
/**
* < WaitingDialog에 Massege를 설정하고 다이어로그를 보여주는 메서드. >
*
* @param [msg] [Dialog 에 보여지는 내용]
* @author [찌빠]
*/
public void startWaitingDialog(final String msg){
new Thread(){
public void run(){
Looper.prepare();
watingDialog = (ProgressDialog) onCreateDialog(msg);
watingDialog.setOnCancelListener(new android.content.DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// 로딩 중에 뒤로가기 버튼이 눌렸을 때 현재 Activity를 finish 해준다.
((Activity) mContext).finish();
}
});
watingDialog.show();
Looper.loop();
}
}.start();
}
/**
* < startWaitingDialog()시 Dialog를 생성하는 메서드 >
*
* @param [msg] [Dialog 에 보여지는 내용]
* @return [Dialog를 반환함.]
* @author [찌빠]
*/
protected Dialog onCreateDialog(String msg) {
ProgressDialog progressDialog = new ProgressDialog(mContext);
progressDialog.setMessage(msg);
progressDialog.setCancelable(true);
return progressDialog;
}
}
'IT 개발' 카테고리의 다른 글
[개발 팁] asp 날짜관련 함수 (0) | 2011.02.11 |
---|---|
[SQL] 오라클, MSSQL 상위 10개만 가져오는 쿼리문(oracle top 10) (0) | 2011.02.11 |
[기타 팁] 리눅스, 윈도우 멀티부팅 시 부팅 순서 조절 (0) | 2011.02.11 |
[Windows7 사용팁] 윈도우7 프로그램 항상 관리자 권한으로 실행하기 (0) | 2011.02.11 |
[기타 팁] windows7 iis 설치 후 asp 파일 실행 시 'HTTP 오류 404.3 - Not Found'오류 (0) | 2011.02.10 |
댓글