如何在检索ListView的项目时显示“加载…”文本

还有一些其他应用程序正在执行此操作,例如Twitter,Facebook,甚至是本地应用程序(如Android Market)。 当您想要显示从互联网上检索到的项目列表时,这看起来像是显示用户关于正在进行的操作的一些通知的标准方式。 这是一个白色的背景屏幕,带有一个animation的转轮和一个“Loading …”文本。

有人知道如何做到这一点?

我已经可以用这个代码做类似的事情,但是我不太喜欢它。 仍在工作中:

<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..." /> 

Solutions Collecting From Web of "如何在检索ListView的项目时显示“加载…”文本"

当用户滚动到底部时,您的适配器的getView应该返回带有“加载..”文本和旋转进度的视图。 同时,AsyncTask或后台线程应该启动,下载一个新的内容块。 当内容准备好时,adapter.notifyDatasetChanged()被调用,ListView重新显示包括新项目的所有内容。

所以“加载…”消息只是ListView中的最后一项。

这是在AsyncTask (一个智能背景线程)和ProgressDialog的帮助下完成的

当AsyncTask启动时,我们确定一个具有不确定状态的进度对话框,一旦任务完成,我们closures对话框。

示例代码
这个例子中的适配器并不重要,理解你需要使用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(); } } 

我不知道它是否会完全符合你的要求,简单的方法是将加载文本初始设置为android-empty-id-view

  <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" /> 

如果没有find列表项,则在asynchronouscallback中将android-empty-id-view设置为不同的消息

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

它会给用户足够的指示,有进展的东西..我正在加载列表