2016-04-25 21 views
5

View Pager'ımdaki click olayı üzerine ayarlamak istiyorum. Benim ViewPagerAdapter bu-Clickable Android'de Görüntüleyici Göster Pardon

public class ViewPagerAdapder extends PagerAdapter { 

    Activity activity; 
    String image[]; 

    public ViewPagerAdapder(Activity act, String[] imgArra) { 
     image = imgArra; 
     activity = act; 
    } 

    public int getCount() { 
     return image.length; 
    } 

    public Object instantiateItem(View collection, final int position) { 
     ImageView view = new ImageView(activity); 

     view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.MATCH_PARENT)); 
     new ImageDownloaderTask(view).execute(image[position]); 
     view.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     view.setAdjustViewBounds(true); 
     ((ViewPager) collection).addView(view, 0); 

    // view.setBackgroundResource(imageArray[position]); 

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

benziyor Ve

myPager = (ViewPager) view.findViewById(R.id.viewpager); 

     myPager.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Ckecking Success", 
         Toast.LENGTH_SHORT).show(); 
      } 
} 

Benim ViewPager çalışıyor benim Esas Faaliyet böyle OnClickListener kuruyorum. OnClickListener'ı hem Main Activity hem de ViewPagerAdapter sınıfında uygulamaya çalıştım. Her iki şekilde işe yaramıyor.

cevap

0

ViewPager için onClickListener'ı kullanamazsınız. Sen

GestureDetector için MotionEvent gönderme şu şekilde kullanmak gerekir

tapGestureDetector = new GestureDetector(this, new TapGestureListener()); 

viewPager.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      tapGestureDetector.onTouchEvent(event); 
      return false; 
     } 
}); 

Referans: etkinlik içine snipt yukarıda https://stackoverflow.com/a/11666743/1084174

1
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      Log.d(TAG, "onPageScrolled") 
     } 

     @Override 
     public void onPageSelected(int position) { 
      Log.d(TAG, "onPageScrollStateChanged") 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
      Log.d(TAG, "onPageScrollStateChanged") 

     } 
    }); 

Kullanımı ve içinizde yöntemlerle yapmak wnat neyi gerçekleştirmek

+0

Ben bu yöntemlerle iç OnClick olay çalıştı. Ne yapar ne de çalışır –

+0

View pager'ı alabiliyor musunuz, ilerliyor mu? – Haroon

+0

Tüm sayfadaki tıklamayı veya bu sayfadaki belirli kontrolleri uygulamak ister misiniz? – Haroon

2

Görüntüleyici için bu sınıfı kullanın.

ClickableViewPager.java

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

Tıklama etkinlik

clickablePager.setOnItemClickListener(new ClickableViewPager.OnItemClickListener() { 
      @Override 
      public void onItemClick(int position) { 
    } 
}); 
+0

Bu benim için çalışıyor. –

+1

Bu, currentItem öğesinin onItemClick konumunda olup, tıklamanın gerçekleştirildiği öğenin konumu değil. –

İlgili konular