1

私は自分のコンテンツを表示するためにタブ付きのViewPagerindicatorを使用しています。重要なのは、私のフラグメントは、多くの要素と画像のために、それらを生成するのに多くの時間がかかる重いビューを持っているということです。ロード中にプログレスバーを表示したいのですが、どうやって管理すればいいですか?私のテストインスタンス(TestFragment)には、多くのtextViewを備えたこのメソッドがあります(現実をシミュレートします)。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


        LinearLayout layout = new LinearLayout(getActivity());
        layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        layout.setGravity(Gravity.CENTER);
        for (int a=0; a < 1000; a++) layout.addView(createTextView());

        return layout;
    }

私のページャーアダプターでは、ページを変更するときにフラグメントを待たないように、すべてのフラグメントを1回ロードできます。

 ViewPager pager = (ViewPager)findViewById(R.id.pager);
 pager.setAdapter(adapter);
 pager.setOffscreenPageLimit(5);

しかし、私にはわかりません。ロードされたすべてのフラグメントをどのように管理できますか?それらはすべてアダプタに次々にロードされるため、次のようになります。

  public Fragment getItem(int position) {
   return TestFragment.newInstance(position);
  }

何か案は?

4

2 に答える 2

0

注意すべき点がいくつかあります。あなたが言及したように、1000個のTextViewをロードするのに、多くの「要素と写真」をロードするのと同じコストがかかるとは思いません。したがって、そのシミュレーションでは実際には正確な結果が得られません。

次に、データの読み込み中にプログレス バーを表示しようとしているとおっしゃいましたか? 要素と写真の任意の量ですか?その場合、ユーザーがコンテンツの読み込みを待っている間、プログレス バーが永遠に表示されないようにする必要があります。IMO、より良いアプローチは、基礎となるデータが不必要にリロードされるのを防ぐある種のキャッシュを使用して、必要な要素を遅延ロードすることです。

于 2013-07-05T19:14:28.670 に答える
0
ProgressDialog progressDialog = new ProgressDialog(context);
 progressDialog.setMessage("Loading...");
            progressDialog.show();

//do your stuff

progressDialog.dismiss();

これでうまくいくはずです!

于 2013-07-05T19:11:36.550 に答える