2013-02-18 60 views
2

我有我的ViewPagerIndicator 3个不同的布局设置数据 - https://github.com/JakeWharton/Android-ViewPagerIndicator在ViewPagerIndicatorin不同的布局

我的项目是从网站加载数据,并相应地设置数据到3个不同的布局ViewPager的。

我该如何去实现它?

在我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标题设置布局。 我知道如何找到ViewById来获取小部件的id并设置数据。但是,数据在代码本身中是静态设置的。

对我来说,我必须从互联网上抓取数据,并据此放入数据。我如何实现这一目标? 在此先感谢。

+0

在你的问题,你链接到'ViewPagerIndicator'大约在'ViewPager'设置数据/布局(?)说话?你究竟想要做什么? – Luksprog 2013-02-25 10:34:45

+0

对不起,我的意思是FragmentPager。 – MrYanDao 2013-02-27 04:05:38

+0

当数据扩展时,你想增加ViewPagerIndicator吗? – 2013-02-27 07:24:37

回答

0

我有我的ViewPagerIndicator 3个不同的布局

ViewPagerIndicator只是一个指标

我想你的意思是你viewadapter有三种视图来显示。

使用FragmentPagerAdapter来处理不同的视图。 你应该阅读ViewPagerIndicator samples

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方法,U可以访问UI组件作为onCreate方法

好让你可以做一个Web服务调用,绑定它适用于这部分中的UI组件。

干杯

0

创建和实现LoaderAsyncTaskLoader)从互联网加载数据。

有你TestFragment实施LoaderCallbacks,这样当LoaderAsyncTaskLoader)已经从互联网加载完成后数据就得到通知。

在你实现你的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

1

我几乎知道你want.Here是我的答案,它工作得很好。 您可以按照以下步骤。

1.创建三个不同的片段类,如LoadImageFragment1,LoadImageFragment2,LoadImageFragment3,所有这些的延伸片段。 以下是我的例子。

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作为样本,可以从Internt的加载图像和文字,你也可以在你的LoadImageAdapter的getView()方法做其他事情。 希望这可以帮助你。

+0

对不起,我的英语交际的差,GoogleMusicAdapter是一个内部类SampleTabsDefault.And的,你可以在ViewPagerIndicator找到他们 - https://github.com/JakeWharton/Android-ViewPagerIndicator – Joe 2013-02-28 10:01:46