2010-07-26 3 views
10

Twitter, Facebook 또는 Android 마켓과 같은 기본 응용 프로그램과 같은 일부 응용 프로그램에서이 작업을 수행하고 있습니다. 인터넷에서 검색된 항목 목록을 표시하려는 경우 진행중인 작업에 대한 알림을 사용자에게 표시하는 표준 방법처럼 보입니다. 이것은 움직이는 회전 바퀴와 "Loading ..."텍스트가있는 흰색 배경 화면입니다.ListView에 대한 항목을 가져 오는 동안 "Loading ..."텍스트를 표시하는 방법

누군가이 작업을 수행하는 방법을 알고 있습니까?

나는이 코드와 비슷한 것을 할 수 있었지만 너무 많이 좋아하지는 않습니다. 여전히 진행중인 작업을 다음 AsyncTask의 도움 (지능형 backround에 스레드)와 작업이 완료되면

AsyncTask를 우리가 불확정 상태와해서 ProgressDialog를 reaise 시작 ProgressDialog, 우리는 해고로 끝났다

<ListView android:id="@+id/post_list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"/> 

    <TextView android:id="@android:id/loading" 
     android:background="@color/white" 
     android:layout_width="fill_parent"  
     android:layout_height="fill_parent" 
     android:gravity="center" android:text="Loading..." /> 

답변

5

사용자가 아래로 스크롤하면 어댑터의 getView가 "로드 중 ..."텍스트 및 진행 진행 상태의보기를 반환해야합니다. 동시에 새로운 콘텐츠 청크를 다운로드하는 AsyncTask 또는 백그라운드 스레드가 시작되어야합니다. 컨텐츠 준비가되면 adapter.notifyDatasetChanged()가 호출되고 ListView는 새 항목을 포함하여 모든 컨텐츠를 다시 표시합니다.

"Loading ..."메시지는 ListView의 마지막 항목 일뿐입니다.

+0

안녕하세요 Fedor! (일명 "OOM 오류를 해결 한 사람"). 나는 너의 답을 더 좋아한다. 당신은 그 발췌 문장을 가지고 있니?. 그렇지 않으면 내가 알아낼 수 있다고 생각 ... – ggomeze

+0

죄송합니다, 미리보기가 필요하지 않습니다. 난 그냥 내 프로젝트 에서이 접근법을 사용하고 잘 작동합니다. 나는 Market이 그런 것을한다고 생각한다. – Fedor

+0

ListView의 setEmptyView 메소드가 흥미 롭습니다. 여기에 프로세스 막대 위젯을 텍스트와 함께 추가 할 수 있습니다. 나는 그것을 완벽하게 아직 만들지 않았다 ... :--( – ggomeze

7

대화 상자.

예제 코드
어떤 어댑터가이 예에서하는 것은 당신이 진행을위한 대화 상자를 표시합니다 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

옵스를로드, 또는 내가 expla하지 않았다 나 자신이 제대로 대답했는지, 아니면 당신의 대답을 잘 모르겠다. 대화 상자를 표시하고 싶지는 않지만 텍스트보기는 Android Market에 예제처럼 표시됩니다. 또한 트위터, 또는 페이스 북은 동일한 TextView를 사용합니다. 로드 된 텍스트보기가 화면 중앙에 표시되는 것을 보셨습니까? 회신을 보내 주셔서 감사합니다 – ggomeze

+0

죄송합니다,이 신 혼란'이것은 회전하는 바퀴와 "Loading ..."와 함께 흰색 배경 화면입니다 – Pentium10

3

완전히 귀하의 요구 사항에 맞는 것인지 모르겠다는 간단한 방법은 안드로이드 비어-ID-보기를 할

<TextView 
     android:id="@android:id/empty" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="Loading... Please Wait" 
     android:textSize="20dip" /> 

처럼 처음 로딩 텍스트를 설정하고 어떤 목록 항목은 다음 설정되어 있지 발견하는 경우 뭔가가 progressing..ie 목록입니다 사용자에게 충분한 표시를 줄 것이다

((TextView) findViewById(android.R.id.empty)).setText("Your List is empty"); 

비동기 콜백 다른 메시지에 안드로이드 비어-ID-보기

관련 문제