Android 当我的ListView被填充时,如何得到通知?

Android 当我的ListView被填充时,如何得到通知?,android,listview,Android,Listview,我正在使用ListActivity,并使用适配器填充列表视图,如下所示: // SimpleAdapter adapter = ... setListAdapter( adapter ); setContentView( R.layout.main ); ListView lv = getListView(); lv似乎没有子级,即使我用布局中的子级填充它,并且适配器中有许多项。我注意到,如果我等待一段时间——当列表视图完全呈现时——它确实有子对象。如何通知我列表视图何时完全可以使用?您可以

我正在使用ListActivity,并使用适配器填充列表视图,如下所示:

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

ListView lv = getListView();

lv似乎没有子级,即使我用布局中的子级填充它,并且适配器中有许多项。我注意到,如果我等待一段时间——当列表视图完全呈现时——它确实有子对象。如何通知我列表视图何时完全可以使用?

您可以在后台使用异步任务填充列表,然后在加载完成后通知自己

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
    }
}
类MyTask扩展了AsyncTask{
m_loaded=假;
@凌驾
受保护字符串doInBackground(上下文…参数){
Log.d(“doinBackground”,“此处”);
//完成你的加载
返回“”;
}
//--在线程开始之前被调用
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
//--在doInBackground方法完成后立即调用
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
m_loaded=true;//列表已加载完毕
}
}

您的意思是适配器最初有超过零个元素,并且数据可用,等等,但您仍然无法立即看到包含正确数据的列表?正确。我使用活动的活套从HandlerThread执行此操作;换句话说,我是在UI线程上做的,所以我不认为这是导致它的原因。