2

ViewPagerIndicator に 3 つの異なるレイアウトがあります - https://github.com/JakeWharton/Android-ViewPagerIndicator

私のプロジェクトは、Web サイトからデータをロードし、それに応じてデータを ViewPager の 3 つの異なるレイアウトに設定することです。

どうすればそれを達成できますか?

私のTestFragmentには、

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        Log.i("mContent", mContent);
        View view = null;
        if (mContent.equalsIgnoreCase("title1")) {
            view = inflater.inflate(R.layout.one, container, false);

        } else if (mContent.equalsIgnoreCase("title2")) {
            view = inflater.inflate(R.layout.two, container, false);
        } else if (mContent.equalsIgnoreCase("title3")) {
            view = inflater.inflate(R.layout.three, container, false);
            //Textview data = (TextView)view.findViewById(id)
        }
        return view;
    }

これは、フリングされたタイトルに従ってレイアウトを設定するためのものです。ウィジェットのIDを取得してデータを設定するためにViewByIdを見つける方法を知っています。ただし、データはコード自体で静的に設定されます。

私にとっては、インターネットからデータを取得し、それに応じてデータを配置する必要があります。どうすればそれを達成できますか?前もって感謝します。

4

4 に答える 4

1

私はあなたが何を望んでいるのかをほとんど知っています。これが私の答えです。うまくいきます。以下の手順でできます。

1. LoadImageFragment1、LoadImageFragment2、LoadImageFragment3 などの 3 つの異なる Fragment クラスを作成し、それらはすべて Fragment を拡張します。以下は私の例です。

public class LoadImageFragment1 extends Fragment {
ListView listView;
LayoutInflater mInflater;
LoadImageAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mInflater = inflater;
    View view = inflater.inflate(R.layout.loadimage_layout, null);
    listView = (ListView) view.findViewById(R.id.listview);
    adapter = new LoadImageAdapter();
    adapter.initList();
    listView.setAdapter(adapter);
    return view;
}

private class LoadImageAdapter extends BaseAdapter{
    ArrayList<String> list = new ArrayList<String>();

    public void initList(){
        for(int i = 0 ; i < 30;i ++){
            list.add("" + i);
        }
    }

    @Override
    public int getCount() {

        return list.size();
    }

    @Override
    public Object getItem(int position) {

        return position;
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = mInflater.inflate(R.layout.loadimage_item, null);
        }
        return convertView;
    }

}

2.SampleTabsDefault クラスを変更します。

    class GoogleMusicAdapter extends FragmentPagerAdapter {
    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
      //  return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
        switch(position){
        case 0:
            return new LoadImageFragment1();
        case 1:
            return new LoadImageFragment2();
        case 2:
            return new LoadImageFragment3();
        }

    }

    @Override
    public CharSequence getPageTitle(int position) {
        return CONTENT[position % CONTENT.length].toUpperCase();
    }

    @Override
    public int getCount() {
      return CONTENT.length;
    }
}

そして、SampleTabsDefault のクラスをサンプルとして使用するだけです。他のクラスでこれを行うことができます。ここでは、サンプルとして ListView を使用します。画像とテキストをインターントからロードできます。また、 LoadImageAdapter の getView() メソッドで他のことを行うこともできます。これがあなたを助けることを願っています。

于 2013-02-28T09:57:36.360 に答える
0

開始する前に、ViewPagerIndicator https://github.com/JakeWharton/Android-ViewPagerIndicator/tree/master/sample/src/com/viewpagerindicator/sampleからサンプルをコピーします。

実行する手順は次のとおりです。

  1. カスタム FragmentPagerAdapter を作成します (例: https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragmentAdapter.java )

  2. 各レイアウトごとにカスタム Fragment を作成します (あなたの場合は 3) https://github.com/JakeWharton/Android-ViewPagerIndicator/blob/master/sample/src/com/viewpagerindicator/sample/TestFragment.java

  3. onActivityCreatedフラグメント クラスでのオーバーライド

メソッドでは、メソッドonActivityCreatedのようにUIコンポーネントにアクセスできますonCreate

Web サービスを呼び出すことができるように、このセグメントの UI コンポーネントにバインドします。

乾杯

于 2013-02-27T07:14:00.600 に答える
0

Loader( ) を作成して実装AsyncTaskLoaderし、インターネットからデータをロードします。

( ) がインターネットからのデータの読み込みを終了 したときに通知されるように、TestFragment実装してください。LoaderCallbacksLoaderAsyncTaskLoader

TestFragment の の実装でonActivityCreated、ローダーを初期化または再起動します。

getLoaderManager().initLoader(0, null, this);

のonLoadFinishedTestFragmentの実装で、データをウィジェットに割り当てます。

https://developer.android.com/reference/android/content/AsyncTaskLoader.html

https://developer.android.com/reference/android/app/LoaderManager.html

https://developer.android.com/reference/android/app/LoaderManager.LoaderCallbacks.html

于 2013-02-27T19:57:13.173 に答える
0

ViewPagerIndicator に 3 つの異なるレイアウトがあります

ViewPagerIndicator は単なるインジケーターです

あなたの意味は、ビューアダプターに表示するビューが3つあるということだと思いました。

FragmentPagerAdapterを使用して、別のビューを処理します。ViewPagerIndicatorサンプルを読む必要があります

于 2013-02-26T08:38:58.050 に答える