2012-09-04 2 views
0

은 내가 ListActivity를 사용하고 있는데 같은 어댑터와 목록보기 작성하고 있습니다 :ListView가 채워질 때 어떻게 알림을받을 수 있습니까?

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

ListView lv = getListView(); 

정맥 주사가 제로 아이를 가질 것을 나는 레이아웃에서 아이들과 함께 그것을 채우기하고있어 어댑터가있는 경우에도 그것에있는 많은 품목. 목록보기가 완전히 렌더링 될 때까지 기다렸다가 아이들이 있다는 것을 알았습니다. 목록보기를 사용할 준비가 된 시점을 어떻게 알 수 있습니까?

+0

처음에는 어댑터에 0 개가 넘는 요소가 있고 데이터가 사용 가능하다는 등의 의미이며 올바른 데이터가있는 목록은 계속 표시되지 않습니까? – Ixx

+0

수정. 나는 Activity의 루퍼를 사용하는 HandlerThread에서 이것을하고있다. 다시 말해 UI 스레드에서이 작업을 수행하고 있기 때문에 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 
    } 
} 
관련 문제