2011-08-15 9 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) 

私はAsyncTask here.

4

私は長い時間前に同じに遭遇してきたが、それはコードがコメントされていないことを申し訳ありませんが、解決しましたが、私はなります疑問もコードhere. を働いていますあなたを助けてうれしい。

これは

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(); 
     } 
     }; 
} 

・ホープこのことができますをロード中にProgressDialogカスタムアダプタを使用してDBから何をListViewを充填するためのコードです。アレックス 。

関連する問題