2

我的 ViewPagerIndicator 上有 3 种不同的布局 - https://github.com/JakeWharton/Android-ViewPagerIndicator

我的项目是从网站加载数据并将数据相应地设置为 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;
    }

我知道这是为了根据 fling'd 标题设置布局。我知道如何 findViewById 来获取小部件的 id 并设置数据。但是,数据是在代码本身中静态设置的。

对我来说,我必须从互联网上获取数据并相应地放入数据。我如何做到这一点?提前致谢。

4

4 回答 4

1

我几乎知道你想要什么。这是我的答案,效果很好。您可以按照以下步骤进行。

1.创建三个不同的Fragment类,如LoadImageFragment1、LoadImageFragment2、LoadImageFragment3,它们都继承了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

创建并实现Loader( AsyncTaskLoader) 以从 Internet 加载数据。

拥有您的TestFragment工具LoaderCallbacks,以便在Loader( AsyncTaskLoader) 完成从 Internet 加载数据时收到通知。

在您的 TestFragment 的实现中onActivityCreated,初始化或重新启动加载程序:

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

在您TestFragment的 onLoadFinished 实现中,将数据分配给小部件。

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 复制示例 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. 为每个布局创建自定义片段(在您的情况下为 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

我的 ViewPagerIndicator 上有 3 种不同的布局

ViewPagerIndicator 只是一个指标

我以为你的意思是你的viewadapter有三个视图要显示。

使用FragmentPagerAdapter处理不同的视图。您应该阅读 ViewPagerIndicator示例

于 2013-02-26T08:38:58.050 回答