ViewPager Adapter类中的活动布局元素

时间:2017-09-02 18:21:41

标签: android

我的一项活动使用ViewPager在图像之间滑动,并在按下图像时启动另一项活动。在开始新活动之前,我使用此library: https://github.com/daimajia/AndroidViewAnimationsactivity_layout中的项目制作动画。问题是我的ViewPagerAdapter不是一个活动类,因此我无法在findViewById

中根据需要使用library

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

这是我在ViewPagerAdapter中使用此库的方法吗?

1 个答案:

答案 0 :(得分: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