public class RSS_TestActivity extends Activity {
public static Object[] items;
private ArrayList<HashMap<String, Object>> list_board = new ArrayList<HashMap<String, Object>>();
private HashMap<String, Object> map;
private SimpleAdapter sa;
private ArrayList<String> contents;
static final int PROGRESS_DIALOG = 0;
private ListView lv;
private TextView status;
private ProgressDialog pDialog;
private ProgressDialog progressDialog;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
status = (TextView) findViewById(R.id.textView1);
lv = (ListView) findViewById(R.id.listView1); // ListView를 보여주는 부분
sa = new SimpleAdapter(this, list_board, R.layout.row_board,
new String[] { "subject", "rowid", "content", "power" },
new int[] { R.id.board_subject, R.id.board_date,R.id.board_writer, R.id.imageView1 });
lv.setAdapter(sa);
contents = new ArrayList<String>();
rssParse(context, sa, list_board);
}
//
public void rssParse(
final ArrayList<String> context, final SimpleAdapter sa, final ArrayList<HashMap<String, Object>> list_board )
{
final Handler mHandler = new Handler();
new Thread(){
public void run(){
list_board.clear();
try {
URL text = new URL("http://203.230.103.101/web.php");
XmlPullParserFactory parserCreator = XmlPullParserFactory
.newInstance();
XmlPullParser parser = parserCreator.newPullParser();
mHandler.post(new Runnable(){
public void run()
{
progressDialog = ProgressDialog.show(RSS_TestActivity.this,"", "데이터를 가져오고 있습니다!");
} });
///파싱하는부분 ///////////////
sa.notifyDataSetChanged();
mHandler.post(new Runnable(){
public void run()
{
sa.notifyDataSetChanged();
progressDialog.cancel();
}
});
} catch (Exception e) {}// Log.i("test", e.toString());
status.setText(str);
}
}.start();
}
}
제가 다이;얼로그 하고있는소스입니다
progressDialog = ProgressDialog.show(RSS_TestActivity.this,"", "데이터를 가져오고 있습니다!"); 무한루프가되서 계속 다이얼로그만뜹니다
RSS_TestActivity.this 부분을 context로바꾸면은 show()에서 에러가납니다
문제해결을 못하고있어서 질문드립니다
답변부탁드려요~
음.. 일단 번외 질문 하나드려도 되요? ㅎ
Q : 저는 progressDialog.dismiss(); 를 쓰는데, .cancel()도 다이얼로그 죽이기 하나요? ㅎ 그냥 심심풀이 질문 ^^
님의 코드가 제가 짜는 거랑 조금 다른 로직이라서... 아직 잘 모르겠습니다 ( 저도 초보라.. )
저는, thread의 run()은 단독적으로 호출하고,
handler를 쓰레드와는 따로 선언을해서 Thread의 run()이 끝난 시점에서
handler로 메세지를 보내서 handler에서 Dialog.dismiss()를 해주고 있습니다 ^^




ProgressDialog.show(...); // 띄우라! 정도로 해석되는 이 Line은 첫 부분에 한번 띄워주시구요,
데이터 다운로드가 다 끝난 시점에서 Handler.sendMessage였나...
무튼, 핸들러를 호출해주셔서 핸들러에서 다이얼로그를 Dismiss() 해주시는 방식으로 해주시는게 좋을 것 같습니다 ^^