Android ViewPager上一个/下一个button

好的,我正在开发一个利用ViewPager来显示页面的Android应用程序。

在每个页面中,我有一组button用于页面之间的导航(除了在页面之间滑动)之外。 这些button用于“首页”,“上一页”,“下一页”和“最后一页”。

我无法弄清楚如何做的是devise一个机制,使button点击页面更改。

有人有主意吗?

ETA:为了更好地解释设置,button在每个页面的布局中被声明,并且在PagerAdapter中被其余的布局充满。 我的问题是,我无法从PagerAdapter中引用ViewPager。 或者至less,我想不出办法做到这一点。

Solutions Collecting From Web of "Android ViewPager上一个/下一个button"

button:

 Button yourButton = (Button)findViewById(R.id.button1); yourButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { mViewPager.setCurrentItem(getItem(+1), true); //getItem(-1) for previous } }); 

function:

 private int getItem(int i) { return mViewPager.getCurrentItem() + i; } 

希望这可以帮助 :)

 yourButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { yourViewPager.setCurrentItem(page, smoothScroll); } }); 

我用这个代码完成了这个项目。

 vPager = (ViewPager) findViewById(R.id.viewpager); View tempView1 = inflater.inflate(R.layout.ani_dialog1, null); firstView = (ImageView) tempView1.findViewById(R.id.ani_dialog_next); views.add(tempView1); firstView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub vPager.setCurrentItem(1, true); } }); 

1)做布局

  <RelativeLayout android:layout_width="match_parent" android:layout_height="200dp" android:background="@color/white" android:weightSum="1"> <android.support.v4.view.ViewPager android:id="@+id/images_pager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> <ImageView android:id="@+id/img_next" android:layout_width="35dp" android:layout_height="35dp" android:src="@drawable/forward_white" android:background="@color/colorPrimary" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:paddingTop="5dp" android:paddingBottom="5dp" /> <ImageView android:id="@+id/img_previous" android:layout_width="35dp" android:layout_height="35dp" android:src="@drawable/back_white" android:background="@color/colorPrimary" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:layout_alignParentLeft="true" android:paddingTop="5dp" android:paddingBottom="5dp"/> </RelativeLayout> 

2)设置自定义适配器

  CustomViewPagerAdapter custompageradpter; ViewPager mViewPager; mViewPager = (ViewPager)shareImagesDialouge.findViewById(R.id.images_pager); custompageradpter = new CustomViewPagerAdapter(this); mViewPager.setAdapter(custompageradpter); public class CustomViewPagerAdapter extends PagerAdapter { Context mContext; LayoutInflater mLayoutInflater; int[] mResources = { R.drawable.emoji_1, R.drawable.emoji_2, R.drawable.emoji_3, R.drawable.emoji_4, R.drawable.emoji_5, R.drawable.emoji_6 }; public CustomViewPagerAdapter(Context context) { mContext = context; mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { return mResources.length; } @Override public boolean isViewFromObject(View view, Object object) { return view == ((LinearLayout) object); } @Override public Object instantiateItem(ViewGroup container, int position) { View itemView = mLayoutInflater.inflate(R.layout.pager_item, container, false); ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView); imageView.setImageResource(mResources[position]); container.addView(itemView); return itemView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((LinearLayout) object); } } 

3)用于下一个和上一个button

  case R.id.img_previous: mViewPager.setCurrentItem(getItemofviewpager(-1), true); break; case R.id.img_next: mViewPager.setCurrentItem(getItemofviewpager(+1), true); break; 

4)做这个function

  private int getItemofviewpager(int i) { return mViewPager.getCurrentItem() + i; } 

更新代码

 Button preButton = (Button)findViewById(R.id.pre_button); Button nextButton = (Button)findViewById(R.id.next_button); preButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(mViewPager.getCurrentItem()-1, true); } }); nextButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mViewPager.setCurrentItem(mViewPager.getCurrentItem()+1, true); } }); 
 public void onClick(View v) { int currentItem = mViewPager.getCurrentItem(); mViewPager.setCurrentItem(currentItem+1); //(currentItem-1) } 

只有button点击代码: @Override

getcurrentitemviewpager的实际项目,下一个项目是currentItem + 1