繁体   English   中英

ListView加载中的Android进度条

[英]Android progress bar in ListView loading

我想在我的应用程序ListView添加LinearLayout内的内容, LinearLayout在加载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中应该列出的地方是include包含在这个布局中的word_list.xml布局

其他事情:

  • 我不想使用进度对话框,因为它不符合我的需要,我发现它看起来不适合我的目的。 我想替换列表,而不是广告。
  • ListFragment似乎相当不错,但我认为可能还有其他更好或更简单的解决方案来实现我想要的东西。

我正在做Android 2.2 / 2.3兼容的应用程序,我忘了提,所以如果有些东西不在android.support.v4.app.Fragment里面,我将不会使用它。

您可以使用ListFragment 使用带有true / false setListShown()来隐藏/显示加载程序而不是列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM