ViewPager OnItemClickListener

Я новичок в Viewpager, и после прочтения http://developer.android.com/reference/android/support/v4/view/ViewPager.html из google я не могу найти ничего связанного с viewPager.setOnItemClickListener(new OnItemClickListener() { У нас есть другие возможности действовать как элемент клика?

Тестирование

 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); } }); 

Ошибка: метод setOnItemClickListener (новый AdapterView.OnItemClickListener () {}) не определен для типа ViewPager

4 Solutions collect form web for “ViewPager OnItemClickListener”

Не существует метода обратного вызова OnItemClick для ViewPager. Если вы хотите, чтобы события нажимали на каждую страницу, вам необходимо создать своего слушателя в содержании страницы в вашем адаптере.

что-то вроде этого:

 @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; } 

то, что вам нужно, будет зависеть от того, что еще вы делаете внутри instantiateItem() которое вы не разместили, поэтому я не могу дать вам более конкретный ответ.

Я реализовал пользовательский ViewPager :

 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; } } } 

И код для реализации onItemClickListener

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

Я не уверен, что вы ожидаете от вас ответить на вышеупомянутого слушателя.

Существует setOnClickListener(View.OnClickListener l) который вы можете использовать для обнаружения касания к viewPager.

Вы также можете использовать onPageScrolled для получения пользовательского ввода, а также onPageSelected и 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 

в вашей деятельности; вы можете переопределить:

  @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); } 
Давайте будем гением компьютера.