2

リストの代わりにプログレスバーがロードされているときに、 appListViewに追加したいと思います。LinearLayoutこれは、アプリを管理できるシステム アプリのようなものです。

私はそれについていくつかの情報を見つけましたが、どれも大丈夫ではありませんでした. onPreExecute()2 つのレイアウト (1 つはプログレス バー付き、もう 1 つは ListView 付き) を作成し、次に(私はこれに使用しています) にプログレス バーを表示するのが最善と思われるもの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>

2 つの追加事項:

  • onResume()AsyncTask を実行するための呼び出しがあります。
  • mylist_layout.xmlこのレイアウトword_list.xmlレイアウトにインクルードするインクルードがあります

他のもの:

  • プログレス ダイアログは自分のニーズに合わず、自分の目的に合わないので使いたくありません。これ以上何も宣伝するのではなく、リストを置き換えたいと思います。
  • ListFragment はまったく問題ないようですが、私が望むものを達成するための他のより良い、またはより簡単なソリューションがあると思います。

私は Android 2.2/2.3 互換のアプリをやっていますが、言い忘れてandroid.support.v4.app.Fragmentいました。

4

1 に答える 1

7

使用できますListFragment。/と共に使用setListShown()して、リストの代わりにローダーを表示/非表示にします。truefalse

于 2013-03-04T12:29:50.597 に答える