2017-09-02 1 views
1

Eine meiner Aktivitäten verwendet ViewPager, um zwischen Bildern zu wischen und eine andere Aktivität zu starten, wenn das Bild gedrückt wird. Bevor ich die neue Aktivität starte, verwende ich diese library:https://github.com/daimajia/AndroidViewAnimations, um die Objekte zu animieren, die ich in activity_layout habe. Das Problem ist, dass mein ViewPagerAdapter ist kein Aktivitätsklasse, damit ich nicht findViewById benötigen verwenden kann, wie in libraryAktivitätslayoutelemente in ViewPager Adapterklasse

Library example:

YoYo.with(Techniques.FadeIn) 
      .duration(2100) 
      .repeat(0) 
      .playOn(findViewById(R.id.settingsButton)); 

ViewPagerAdapter:

public class ViewPagerAdapter extends PagerAdapter{ 

List<Integer> lstCrates; 
Context context; 
LayoutInflater inflater; 

public ViewPagerAdapter(List<Integer> lstImages, Context context) { 
    this.lstCrates = lstImages; 
    this.context = context; 
    inflater = LayoutInflater.from(context); 
} 

@Override 
public Object instantiateItem(ViewGroup container, final int position) { 
    View view = inflater.inflate(R.layout.list_item, container, false); 
    ImageView swipeableCrate = (ImageView)view.findViewById(R.id.swipeableCrate); 
    swipeableCrate.setImageResource(lstCrates.get(position)); 

    view.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (position == 0) { 
       Intent intent = new Intent(context, Gamescom.class); 
       context.startActivity(intent); 
       if (context instanceof Activity) { 
        ((Activity) context).overridePendingTransition(R.anim.animation1, R.anim.animation2); 
       } 

      } 
      if (position == 1) { 
       Intent intent = new Intent(context, MainActivity.class); 
       context.startActivity(intent); 
       if (context instanceof Activity) { 
        ((Activity) context).overridePendingTransition(R.anim.animation1, R.anim.animation2); 
       } 
      } 
      if (position == 2) { 
       Intent intent = new Intent(context, Main2Activity.class); 
       context.startActivity(intent); 
       if (context instanceof Activity) { 
        ((Activity) context).overridePendingTransition(R.anim.animation1, R.anim.animation2); 
       } 
      } 
     } 
    }); 

    container.addView(view); 
    return view; 
} 

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

@Override 
public int getCount() { 
    return lstCrates.size(); 
} 

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

Ist dies eine Weise, die ich verwenden können, diese Bibliothek in meinem ViewPagerAdapter?

Antwort

2

Wenn Sie context als Mitglied in Ihrem Adapter haben, dann können Sie es mögen verwenden:

YoYo.with(Techniques.FadeIn) 
      .duration(2100) 
      .repeat(0) 
      .playOn(((MainActivity)context).findViewById(R.id.settingsButton)); // MainActivity will be replaced with the name of your Activity 
+0

Bitte, betrachten es als Antwort zu akzeptieren, wenn es – emiraslan

+1

geholfen Es hat funktioniert! Danke vielmals! –

Verwandte Themen