2

我正在尝试像android市场一样显示来自不同类别的产品。我已经用this库实现了这种行为,并且它运行良好。viewpager中的不同布局

我现在要做的是在类别的页面中有一个列表视图,并在其他每个网格视图中有一个列表视图。当然,他们每个人都会有不同的数据来源。

我该如何做到这一点?它与适配器有什么关系?

回答

1

我想你想扩展FragmentPagerAdapter,覆盖getItem,并根据ViewPager中的索引/位置返回正确的Fragment对象(或ListFragment)。

在布局XML为您的活动,你应该包括ViewPager<android.support.v4.view.ViewPager>),并在活动onCreate使用的ViewPagersetAdapter方法来分配你的FragmentPagerAdapter

+0

谢谢。当我返回正确的片段时,我应该创建一个新的或做类似的事情: return MyFragment.newInstance(position); – olistic

+0

要么工作。取决于这两个片段有多不同 - 将它们分成两个不同的类可能是有意义的,或者根据传递给它的构造函数的内容来改变单个片段也许是有意义的。就我个人而言,我会用两个不同的片段类。 –

+0

非常感谢你 – olistic

0

你好,我有解释如何使用该片段鉴于寻呼机在我的教程对此link

看看您也可以从here

9

下载的代码,我已经找到一个很好的例子,你可以找到该网站上的

https://github.com/astuetz/ViewPagerExtensions

否则希望这个代码将会对您有所帮助。

@Override 
public Object instantiateItem(View collection, int position) { 
    View v = new View(PatientView.this.getApplicationContext()); 
    final LayoutInflater inflater = (LayoutInflater) PatientView.this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    switch (position) { 
    case 0: 
     v = inflater.inflate(R.layout.patientp1, 
       (ViewGroup) null, false); 
     ((Button) v.findViewById(R.id.pp1btnbck)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       finish(); 
      } 
     }); 

     break; 
    case 1: 
     v = inflater.inflate(R.layout.patientp2, null, false 
       ); 
     break; 
    default: 

     TextView tv = new TextView(PatientView.this.context); 
     tv.setText("Page " + position); 
     tv.setTextColor(Color.WHITE); 
     tv.setTextSize(30); 
     v = tv; 
     break; 
    } 
    ((ViewPager) collection).addView(v, 0); 

    return v; 
} 
+0

哥们我正在尝试这个,但在这里我得到错误“类型不匹配:无法从视图转换为int”在v ​​= inflater.inflate(R.layout.patientp1, (ViewGroup)null,false); –

+1

感谢哥们这帮我... –

+0

酷哥..谢谢 –