2017-05-12 3 views
0

Gebrauchte ViewPager für Bilder Schiebe-, wenn auf jedes Bild klicken muss eine Aktion tun, seine andere Aktion von Bild zu Bild,Bild viewpager OnClickListener Ausgabe

Ich bin neu auf Android-Entwicklung

so versuche ich hinzufügen onClick Zuhörer ViewPager, aber ich kann es nicht erreichen kann,

bitte jeder Vorschlag, wie OnClickListener so zu implementieren, wenn ich das erste Bild klicken Aktion tun und wenn sie auf das zweite Bild eine andere Aktion tun und so weiter für alle Bilder, ich habe es in der Ansicht pa ger

danke im voraus.

MainActivity:

public class MainActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
ImageAdapter adapter = new ImageAdapter(this); 
viewPager.setAdapter(adapter); 
    } 


} 

ImageAdapter:

public class ImageAdapter extends PagerAdapter { 
Context context; 
private int[] GalImages = new int[] { 
    R.drawable.a, 
    R.drawable.b, 
    R.drawable.c, 
    R.drawable.d, 
    R.drawable.g, 
    R.drawable.h, 

}; 
ImageAdapter(Context context){ 
    this.context=context; 
} 
@Override 
public int getCount() { 
    return GalImages.length; 
} 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == ((ImageView) object); 
} 

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    ImageView imageView = new ImageView(context); 
    intpadding=context.getResources().getDimensionPixelSize(R.dimen.activity_horizontal_margin); 
    imageView.setPadding(padding, padding, padding, padding); 
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imageView.setImageResource(GalImages[position]); 
    ((ViewPager) container).addView(imageView, 0); 
    return imageView; 
} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    ((ViewPager) container).removeView((ImageView) object); 
} 
} 

Antwort

0

zu fangen, um Ereignisse in ViewPager klicken Sie onTouchListener außer Kraft setzen müssen, da Default-Implementierung nicht gemacht mit Klicks umgehen

Ihre MainActivity etwas sollte wie folgt aussehen:

private ViewPager mViewPager; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mViewPager= (ViewPager) findViewById(R.id.view_pager); 
     ImageAdapter adapter = new ImageAdapter(this); 
     mViewPager.setAdapter(adapter); 

     final GestureDetector tapGestureDetector = new GestureDetector(this, new TapGestureListener()); 
     mViewPager.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       tapGestureDetector.onTouchEvent(event); 
       return false; 
      } 
     }); 
    } 


    private class TapGestureListener extends GestureDetector.SimpleOnGestureListener { 
     @Override 
     public boolean onSingleTapConfirmed(MotionEvent e) { 

      if (mViewPager.getCurrentItem() == 0) { 
      //do your thing tied with first page 
      } else if (mViewPager.getCurrentItem() == 1) { 
      //do your thing tied with second page 
      } else if (mViewPager.getCurrentItem() == 2) { 
      //do your thing tied with third page 
      } 

      return super.onSingleTapConfirmed(e); 
     } 
    } 
+0

jeder Seite, wenn sie angeklickt werden verschiedene mp3 laufen, so dass die Wirkung von jeder Seite anders sein wird, wie das bitte zu bekommen, alle mp3 gespeichert auf der App selbst, danke – frozenhill4

+0

@ frozenhill4 check my editedAnswer –

+0

ich bin neu bei android, ich habe zwei rote linienfehler unter (msend) mSend.setOnTouchListener (new View.OnTouchListener() {auch unter (mViewPager) in allen (if & else code), Bitte, wie es zu lösen, danke – frozenhill4

-1

Try this:

@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 do your action 
    according to position 
      Log.i("TAG", "This page was clicked: " + pos); 
     } 
    }); 


    ((ViewPager) collection).addView(page, 0); 
    return page; 
}