ViewPager OnItemClickListener

Soy nuevo en Viewpager, y después de leer http://developer.android.com/reference/android/support/v4/view/ViewPager.html de Google, parece que no puedo encontrar nada relacionado en viewPager.setOnItemClickListener(new OnItemClickListener() { ¿Tenemos otras opciones para actuar como Item Clicked?

Probando

 viewPager.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Intent i = new Intent(MainActivity.this, SingleItemView.class); i.putExtra("flag", flag); i.putExtra("position", position); startActivity(i); } }); 

Error: el método setOnItemClickListener (nuevo AdapterView.OnItemClickListener () {}) no está definido para el tipo ViewPager

No hay un método de callback OnItemClick para ViewPager. Si desea hacer clic en eventos en cada página, tendrá que crear su oyente en el contenido de la página dentro de su Adaptador.

algo como esto:

 @Override public Object instantiateItem(View collection, final int pos) { //have to make final so we can see it inside of onClick() LayoutInflater inflater = (LayoutInflater) collection.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View page = inflater.inflate(R.layout.YOUR_PAGE, null); page.setOnClickListener(new OnClickListener(){ public void onClick(View v){ //this will log the page number that was click Log.i("TAG", "This page was clicked: " + pos); } }); ((ViewPager) collection).addView(page, 0); return page; } 

exactamente lo que necesita dependerá un poco de qué otra cosa esté haciendo dentro de instantiateItem() que no haya publicado, así que no puedo darle una respuesta más específica.

Implementé ViewPager personalizado:

 public class ClickableViewPager extends ViewPager { private OnItemClickListener mOnItemClickListener; public ClickableViewPager(Context context) { super(context); setup(); } public ClickableViewPager(Context context, AttributeSet attrs) { super(context, attrs); setup(); } private void setup() { final GestureDetector tapGestureDetector = new GestureDetector(getContext(), new TapGestureListener()); setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { tapGestureDetector.onTouchEvent(event); return false; } }); } public void setOnItemClickListener(OnItemClickListener onItemClickListener) { mOnItemClickListener = onItemClickListener; } public interface OnItemClickListener { void onItemClick(int position); } private class TapGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapConfirmed(MotionEvent e) { if(mOnItemClickListener != null) { mOnItemClickListener.onItemClick(getCurrentItem()); } return true; } } } 

Y código para implementar onItemClickListener

 ClickableViewPager viewPager = (ClickableViewPager) findViewById(R.id.viewPager); viewPager.setOnItemClickListener(new ClickableViewPager.OnItemClickListener() { @Override public void onItemClick(int position) { // your code } }); 

No estoy seguro de qué esperarías para responderte con el oyente anterior.

Existe un setOnClickListener(View.OnClickListener l) que puede usar para detectar un toque en viewPager.

También puede usar onPageScrolled para obtener la entrada del usuario, y onPageSelected y onTabSelected .

 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mActionBar.setSelectedNavigationItem(position); } @Override public void onPageScrollStateChanged(int state) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { Object tag = tab.getTag(); for (int i=0; i 

en tu actividad; puedes anular:

  @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mDownX = ev.getX(); mDownY = ev.getY(); break; case MotionEvent.ACTION_UP: mDownX -= ev.getX(); mDownY -= ev.getY(); if(mDownX==0 && mDownY==0) { your action if click } break; } return super.dispatchTouchEvent(ev); }