我想添加我的应用ListView
,在LinearLayout
内,加载时代替列表有进度条。这类似于系统应用程序,您可以在其中管理您的应用程序。
我找到了一些关于它的信息,但没有一个是好的。看起来最好的一个是创建两个布局(一个带有进度条,另一个带有ListView),然后放在onPreExecute()
(我使用AsyncTask
)显示进度条。然后在onPostExecute()
隐藏它,那就是全部。
我试图实现它,但我有ScrapView错误,没有更多信息,如何做到。
所以,我的问题是,你会如何推荐我这样做? 我不想要任何进度对话框。
修改
这是我的代码片段,显示了我到目前为止所做的事情:
TestActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylist_layout);
wordList = (ListView) findViewById(R.id.wordsList);
//...
}
private class AsyncDBDownload extends AsyncTask<String, Integer, String> {
LinearLayout linlaHeaderProgress = (LinearLayout) findViewById(R.id.linlaHeaderProgress);
@Override
protected String doInBackground(String... params) {
try {
refreshList();//upload of contetn and set of adapter
} catch (Exception ex) {
Log.e(TAG, ex.toString());
}
return null;
}
@Override
protected void onPostExecute(String result) {
linlaHeaderProgress.setVisibility(View.GONE);
wordList.setVisibility(View.VISIBLE);
}
@Override
protected void onPreExecute() {
linlaHeaderProgress.setVisibility(View.VISIBLE);
}
}
private void refreshList() {
//List content download into Cursor - adapterCursor
//...
wordList.setAdapter(adapterCursor);
}
word_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linlaHeaderProgress"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone" >
<ProgressBar
android:id="@+id/pbHeaderProgress"
style="@android:style/Widget.ProgressBar.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ProgressBar>
</LinearLayout>
<ListView
android:id="@+id/wordsList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fastScrollEnabled="true" >
</ListView>
另外两件事:
onResume()
中,要求执行AsyncTask; mylist_layout.xml
中应该列出的地方包括哪个包含在此布局中word_list.xml
布局其他事项:
我正在做Android 2.2 / 2.3兼容的应用程序,我忘了提及,所以如果有些东西不在android.support.v4.app.Fragment
内,我将不会使用它。
答案 0 :(得分:7)
您可以使用ListFragment
。使用setListShown()
与true
/ false
隐藏/显示加载程序而不是列表。