我想在我的应用程序中添加ListView
,里面LinearLayout
什么时候加载而不是列表有进度条。这类似于系统应用程序,您可以在其中管理您的应用程序。
我找到了一些关于它的信息,但没有一个是好的。一个似乎最好的说法是创建两个布局(一个带有进度条,另一个带有 ListView),然后在onPreExecute()
(我正在使用AsyncTask
它)显示进度条。然后onPostExecute()
隐藏它,仅此而已。
我试图实现它,但我有 ScrapView 错误,并且没有更多信息,它是如何完成的。
所以,我的问题是,你会建议我怎么做?我不想要任何进度对话框。
编辑:
这是我的代码片段,显示了我到目前为止所做的事情:
测试活动.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
布局中的包含
其他事情:
- 我不想使用进度对话框,因为它不符合我的需要,而且我觉得它看起来不适合我的目的。我想替换列表,而不是添加任何内容。
- ListFragment 似乎还不错,但我认为可能还有其他更好或更简单的解决方案来实现我想要的。
我正在做与 Android 2.2/2.3 兼容的应用程序,我忘了提,所以如果里面没有东西android.support.v4.app.Fragment
,我就不会使用它。