2011-08-15 5 views
6

listview가로드되는 동안 ProgressDialog를 표시하려고합니다. 이미 다음 코드를 시도했지만 작동하지 않았습니다.listview가로드되는 동안 progressdialog를 표시합니다.

final ProgressDialog dialog = ProgressDialog.show(this, "indeterminate", "Please wait while loading", true); 
final Handler handler = new Handler() { 
    public void handleMessage(Message msg) { 
     dialog.dismiss(); 
     } 
    }; 
Thread checkUpdate = new Thread() { 
    public void run() { 
     // listview will be populated here  
     PopulateListView();   
     handler.sendEmptyMessage(0); 
     } 
    }; 
checkUpdate.start(); 

하지만 전혀 작동하지 않았습니다.

+0

오류가 발생 했습니까? 문제는 무엇인가? –

답변

1

ppshein ... 몇 통화가 누락 된 것 같습니다.

1) new Thread(new Runnable() { 
2) super.handleMessage 
3) switch(msg.what) 

나는 코드 here. 작업 한 또한 here.

4

내가 오래 전에 같은으로 실행 한 AsyncTask를하지만, 코드가 주석되지 않았 죄송합니다, 해결되었다, 그러나 의심이 나는 것 기꺼이 도와 드리겠습니다.

가있는 채우는 ListView 코드입니다이 도움이

public class whateverListActivity extends ListActivity 
{ 

    private ProgressDialog mProgressDialog = null; 
    private ArrayList<Whatever> mWhatevers = null; 
    private WhateverAdapter mAdapter; 
    private Runnable mViewWhatevers; 
    private SQLiteDatabase mDatabase; 
    private WhateverHelper mWhateverHelper; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.whatever_list); 
     mWhatevers = new ArrayList<Whatever>(); 
     mAdapter = new WhateverAdapter(this, R.layout.whatever_row, mWhatevers); 
     setListAdapter(this.mAdapter); 
     SQLiteOpenDataHelper helper = new SQLiteOpenDataHelper(this); 
     mDatabase = helper.getWritableDatabase(); 
     } 



    @Override 
    protected void onResume() { 
      try{ 
     super.onResume(); 
     mWhateverHelper = new WhateverHelper(this,mDatabase); 
     startGetWhatevers(); 
      } catch (Exception e) { 
       Log.e("BACKGROUND_PROC", e.getMessage()); 
       } 
    } 

    private void startGetWhatevers(){ 
      mViewWhatevers = new Runnable(){ 
       public void run() { 
        getWhatevers(); 
       } 
      }; 
      Thread thread = new Thread(null, mViewWhatevers, "Background"); 
      thread.start(); 
      mProgressDialog = ProgressDialog.show(this,  
       "Please wait...", "Retrieving data ...", true); 
    } 
    private void getWhatevers(){ 
     try{ 
      mWhatevers = new ArrayList<Whatever>(); 
      for (Whatever whatever : mWhateverHelper.getCurrentWhatevers()) { 
       mWhatevers.add(whatever); 
      } 
      Thread.sleep(1500); 
      Log.i("ARRAY", ""+ mWhatevers.size()); 
      } catch (Exception e) { 
      Log.e("BACKGROUND_PROC", e.getMessage()); 
      } 
      runOnUiThread(returnRes); 
     } 

    private Runnable returnRes = new Runnable() { 
     public void run() { 
      mAdapter.clear(); 
      if(mWhatevers != null && mWhatevers.size() > 0){ 
       mAdapter.notifyDataSetChanged(); 
       for(int i=0;i<mWhatevers.size();i++) 
       mAdapter.add(mWhatevers.get(i)); 
      } 
      mProgressDialog.dismiss(); 
      mAdapter.notifyDataSetChanged(); 
     } 
     }; 
} 

희망을로드하는 동안 DB에서 사용자 정의 어댑터는 A ProgressDialog를 사용하여 어떤가. 알렉스.

관련 문제