2017-09-02 63 views
1

我的一項活動使用ViewPager在圖像之間滑動並在按下圖像時啓動另一個活動。在開始新活動之前,我使用這個library:https://github.com/daimajia/AndroidViewAnimations來動畫我在activity_layout中的物品。問題是,我ViewPagerAdapter不是一個活動類,以便根據需要libraryViewPager適配器類中的活動佈局元素

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

我不能使用findViewById這是一種方法,我可以使用這個庫在我的ViewPagerAdapter

回答

2

如果您在您的適配器有context作爲成員,那麼你可以使用它像:

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

請考慮接受它的答案,如果它幫助 – emiraslan

+1

它的工作!非常感謝! –