@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(position == (helper.Static_Request_MakeInfo.size() - 1)){
main.send_toServer("REQUEST_ROOM_INFO/"+helper.Static_Request_MakeInfo.size());
new Dialog_AsyncTask(getContext()).execute("");
notifyDataSetChanged();
}
안녕하세요.
현재 listview에서 목록을 보여주다가 맨아래에있는 listview에 position이 도착하면
main.send_toserver를 이용해서 데이터를 요청하고 dialog_asyncTask를 만들어서 while문으로 기다리다가
데이터가 도착하면 notifyDataSetChanged하게끔 만들고싶은데요.
우선 데이터는 잘 도착하고 progressDialog도 잘 동작합니다.
하지만 문제가
1. 데이터스택이 쌓이긴하는데 이게 notifysetchanged가 안된다는것과.
2. send_toServer로 보내는 메시지가 두번찍힌다는것입니다.
코딩하다보니 왠지모르겠는데 4번찍혀버릴때도 있더군요.. 현재 코딩상태로는 2번이 계속찍히고
다이얼로그가 돌아간뒤에 다이얼로그가 사라지고 그상태를 그대로 유지합니다.
따라서 다른곳을 갔다가 oncreat시키면 모든 데이터가 다시보이게되구요.
이걸 메시지를 한번만 보내고,
progressdialog가 사라진뒤에 바로 갱신할 수 없을까요??
아래는 AsyncTask 클래스입니다.
class Dialog_AsyncTask extends android.os.AsyncTask<String //excute 실행시 넘겨줄 데이터 타입
, String //진행정보 데이터 타입,publishProgress(), onProgressUpdata 의 인수
, Integer //doInbackground()종료시 리턴될 데이터 타입 onPostExecute()의 인수
> {
private ProgressDialog progressDialog;
private Context mContext;
class main extends MainActivity{}
main m = new main();
public Dialog_AsyncTask(Context context){
mContext = context;
}
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(mContext);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setTitle("Loading.......");
progressDialog.setMessage("서버로 부터 데이터 전송중");
progressDialog.setCancelable(false);
progressDialog.show();
super.onPreExecute();
}
@Override
protected Integer doInBackground(String... params) {
while(true){
System.out.println(helper.arriveVector);
if(helper.arriveVector){
break;
}
}
return null;
}
@Override
protected void onPostExecute(Integer integer) {
progressDialog.dismiss();
super.onPostExecute(integer);
}
}
항상 질문에 답해주셔서 정말정말 감사합니다.