首先,这是我的MainPageViewer:
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager);
MyPageAdapter adapter = new MyPageAdapter();
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
pager.setCurrentItem(0);
我的PageViewer适配器在这里:
public int getCount()
{
return 3;
}
public Object instantiateItem(View collection, int position)
{
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch(position)
{
case 0:
resId = R.layout.blogandbericht;
break;
case 1:
resId = R.layout.blogandbericht;
break;
case 2:
resId = R.layout.blogandbericht;
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2)
{
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1)
{
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState()
{
return null;
}
(是的,我知道,所有布局都是“bloganbericht”)
这是我的博客和网友:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/masterSv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#8ad5f0">
<LinearLayout
android:id="@+id/masterLl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="foo bar"/>
</LinearLayout>
</ScrollView>
一切正常。我可以看到每个布局上的三个按钮。 但是,我如何动态地将文本视图或按钮等视图添加到布局中?
答案 0 :(得分:1)
那么viewpager只支持每个页面内的1个视图,因此在适配器中修改方法:
public Object instantiateItem( View pager, int position )
您可以在此方法中创建视图并将其返回为:
WebView web = new WebView(mContext);
return web;
或者,如果您需要一个比“对象”更复杂的视图,那么您可以创建一个线性布局或类似的东西,并在其中添加其他视图并返回该视图:
LinearLayout layout = new LinearLayout(mContext);
WebView web = new WebView(mContext);
Button btn = new Button(mContext);
layout.addView(web);
layout.addView(btn);
return layout;
希望它有所帮助。
<强>更新强>
现在我正在做类似的事情,我认为我会添加到viewpager动态,所以根据对象的类型我决定里面会是什么。 我不知道你打算如何确定页面的外观,但我会告诉你我是怎么做的。
我有一个“对象”列表,这些对象从一个类扩展(你也可以通过接口和实现来实现,我可以通过其他原因进行扩展),并且该类有一个方法“public查看getView()“以及从父类(或实现接口)扩展的所有类中,覆盖(实现)方法并添加使”PAGE“看起来像你想要的所需的代码,然后在适配器您只需要拥有您创建的任何类的“对象”列表,并根据每个“对象”的类型创建传递给ViewPager的视图。
示例:强>
Dog // CLASS OR INTERFACE WITH METHOD getView()
-Chihuahua //返回WebView
-Sharpei //返回HorizontalListView
-Huskie //这将返回一个LinerLayout,里面有一堆视图
适配器上的:
public class ViewPagerAdapter extends PagerAdapter {
List<Dog> Doggies = new ArrayList<Dog>();
public ViewPagerAdapter( Context context ){
Doggies.add(new Chihuahua());
Doggies.add(new Sharpei());
Doggies.add(new Chihuahua());
Doggies.add(new Huskie());
Doggies.add(new Huskie());
Doggies.add(new Chihuahua());
Doggies.add(new Sharpei());
}
//and last but not least, on your onCreate method in your adapter:
public Object instantiateItem( View pager, int position ){
return Doggies.get(position).getView();
}
/*THE REST OF THE METHODS GOES AFTER THIS*/
} //END OF ADAPTER