2012-09-04 22 views
0

我使用ListActivity和我填充適配器這樣的列表視圖:如何在我的ListView被填充時得到通知?

// SimpleAdapter adapter = ... 
setListAdapter(adapter); 
setContentView(R.layout.main); 

ListView lv = getListView(); 

LV似乎已經爲零的孩子,即使我帶着孩子從佈局填充它和適配器具有它裏面有很多物品。我注意到,如果我等待一段時間 - 當列表視圖完全呈現時 - 它確實有孩子。如何在列表視圖完全可以使用時得到通知?

+0

您的意思是適配器最初有多於零個元素,並且數據可用,等等,您仍然沒有立即看到帶有正確數據的列表? – Ixx

+0

正確。我從使用Activity的活套的HandlerThread中執行此操作;換句話說,我在UI線程上這樣做,所以我不認爲這是造成它的原因。 – Phillip

回答

1

您可以使用AsyncTask在後臺填充列表,然後在加載完成後通知您自己。

class MyTask extends AsyncTask<Context, Integer, String> { 

    m_loaded = false; 

    @Override 
    protected String doInBackground(Context... params) { 
     Log.d("doinBackground", "here"); 

     // do your loading 

     return ""; 

    } 

    // -- gets called just before thread begins 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 

    // -- called as soon as doInBackground method completes 
    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     m_loaded = true; //your list is done loading 
    } 
}