ListView로 데이터를 받아오는 동안 progressDialog 로 로딩중이라는것을 보일려고 합니다.
현제 제가 어떤 웹페이지에서 HTML정보를 가지고 오고 파싱을 합니다.
그리고 데이터를 가지고 오는데 네트워크 상황에따라 빨리가지고 오기도 하고 늦게 가지고 오기도 합니다
따라서 로딩화면을 보이기 위해서 progressDialog 를 사용하려고 하는데
현제 Thread 개념을 잘몰라서 그런지 화면에서는 데이터가 이미 출력이 됬는데
progressBar 가 돌고있습니다
코딩할때 progressDialog 를 몇초동안 (정적으로) 지정 해서 그런것 같습니다
따라서 어떻게 하면 데이터가 출력 되기 전 까지 만 로딩화면이 보일수가 있을까요??
===아래는 제가 사용하는 코드입니다===
public class AAA extends Activity {
private ProgressDialog progressDialog;
public void onCreate(Bundle savedInstanceState)
{
....
runDialog(2); //2초간 화면에 나옵니다
.....
....
(생략)
}
private void runDialog(final int seconds)
{
progressDialog = ProgressDialog.show(this, "Please wait....", "로딩 중입니다. 잠시 기다려주세요");
new Thread(new Runnable(){
public void run(){
try {
Thread.sleep(seconds * 1000);
progressDialog.dismiss();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
네 감사합니다 ㅠ
그런데
1.ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(readingroom.this,android.R.layout.simple_list_item_1,list);
2.ListView listView = (ListView)findViewById(R.id.list);
3.listView.setAdapter(arrayAdapter);
4.ProgressDialog.dismiss();
데이터 파싱하는부분 넣고 리스트 뷰 를 어뎁터로 보이려고 하는데 자꾸 무한으로 progressDialog가 돌길래
logcat 돌려보니 3번 부분을 못알아 먹는듯 합니다 ㅠ
스레드까지도 필요없지 싶네요..
받아오기 시작하는 부분에서 다이얼로그를 시작하는 부분을 주고 다받아온후 리스트에 셋을 하면 그후 다이얼로그를 종료하면 되겠죠.
위에 어댑터 set하는 부분은 쓰레드를 종료 시킨 다음에 해야되요.
public void onCreate(Bundle savedInstanceState)
{
....
runDialog(2); //2초간 화면에 나옵니다
1.ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(readingroom.this,android.R.layout.simple_list_item_1,list);
2.ListView listView = (ListView)findViewById(R.id.list);
3.listView.setAdapter(arrayAdapter);
.....
....
(생략)
}
이렇게 밖으로 빼야되요.
어댑터를 set하는 거는 단순히 뷰를 형성하는 거기 때문에 어떤 프로세스가 종료되었다고 인식을 못하는 걸꺼예요.
그래서 다이얼로그가 종료가 안되는거죠..
mcnama 님 처럼 실행을 하니 다이얼로그는 제대로 되는데 데이터가 출력이 되지않고
백지상태로 출력되네요 ㅠㅠ
댓글 달아주시는거 정말 감사합니다




progressDialog.dismiss();
전에 thread.sleep 대신에 서버에서 데이타를 불러다가 파싱하는 부분을 넣어주심 되요.