2010-11-20 6 views
0

인터넷에서 가져온 데이터로 내 애플리케이션에서 매우 복잡한 목록보기가 있습니다. 가능한 즉시 ListView를 미리로드하여 화면에 즉시 표시되도록하는 가장 좋은 방법은 무엇입니까?Android : 사전로드 목록 활동

예를 들어 안드로이드의 표준 SMS/MMS 앱은 대화가 표시되기 전에 회전 로더와 '로드 중 ...'이있는 흰색 화면을 보여줍니다. 안드로이드 소스 코드에서 이것을 실제로 찾을 수는 없지만, 이것이 캐싱을하고 대화 Activity에 finish()를 사용하여 화면 변경 애니메이션이 표시되지 않도록 여분의 로딩 액티비티라고 생각합니다.

어떻게 미리로드하거나 ListView 항목을 캐시 할 수 있습니까? 그렇게 할 수 있습니까?

감사합니다! 안부는 AsyncTask를이 작업이 우리가 대화 상자를 닫습니다 완료되면 우리가 불확정 상태와 함께해서 ProgressDialog를 높이기 시작되면 AsyncTask의 도움 (지능형 backround에 스레드)와 ProgressDialog

로 끝났다 월 올리버

답변

1

.

예제 코드
어떤 어댑터가이 예에서하는 것은 당신이 진행을위한 대화 상자를 표시합니다 AsyncTask를를 사용할 필요가 있음을 이해하는 것이 더 중요하지 않는 것이 중요합니다.

private class PrepareAdapter1 extends AsyncTask<Void,Void,ContactsListCursorAdapter > { 
    ProgressDialog dialog; 
    @Override 
    protected void onPreExecute() { 
     dialog = new ProgressDialog(viewContacts.this); 
     dialog.setMessage(getString(R.string.please_wait_while_loading)); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 
    /* (non-Javadoc) 
    * @see android.os.AsyncTask#doInBackground(Params[]) 
    */ 
    @Override 
    protected ContactsListCursorAdapter doInBackground(Void... params) { 
     cur1 = objItem.getContacts(); 
     startManagingCursor(cur1); 

     adapter1 = new ContactsListCursorAdapter (viewContacts.this, 
       R.layout.contact_for_listitem, cur1, new String[] {}, new int[] {}); 

     return adapter1; 
    } 

    protected void onPostExecute(ContactsListCursorAdapter result) { 
     list.setAdapter(result); 
     dialog.dismiss(); 
    } 
} 
+0

친애하는 펜티엄 10, 답변 주셔서 감사합니다! 내 응용 프로그램에서 시간이 많이 소요되는 부분은 ListAdapter의 getView() 메서드를 호출하는 것이지만 많은 도움이 될 수 있습니다. 하지만 어쨌든 : onCreate 메서드에서 ListView에 대한 어댑터를 제공 할 필요가 있습니까? 그들은 어떻게 여기에서 이것을 했습니까? 빈 더미리스트 나 뭐라도? 또한 로딩 애니메이션이있는이 흰색 화면은 전체 화면을 포함하는 ProgressDialog 일뿐입니다. 미리 감사드립니다! – janoliver

+0

비어있는 경우에도 목록보기에서 어댑터를 제공 할 수 있습니다. 나중에 항목을 추가 할 수 있으며 notifyDatasetChanged 이벤트를 호출하여 ListView를 새로 고칠 수 있습니다. 나중에 사용할 수 있도록 일부 클래스 객체에서보기를 캐시 할 수 있습니다. – Pentium10