Java 是否使ViewPager上的第一个图像的按钮不可见,其余图像的按钮可见,onClickListener?

Java 是否使ViewPager上的第一个图像的按钮不可见,其余图像的按钮可见,onClickListener?,java,android,android-fragments,Java,Android,Android Fragments,我有一个ViewPager设置,其中有一组图像可以在其中滑动。在底部我有一个按钮,允许用户选择最适合他们的图像。我希望在数组的第一个图像上使按钮不可见,然后在第二个图像被刷到后使按钮可见。我尝试过许多我能想到的不同的解决方案,但目前我被难倒了。我可以通过许多不同的途径使按钮不可见,例如在xml文件中将其可见性设置为不可见,还可以通过onCreate中的if…if else语句使按钮不可见,并得出结论,我可能需要某种onclick侦听器。这是我目前的代码 public class MainActi

我有一个ViewPager设置,其中有一组图像可以在其中滑动。在底部我有一个按钮,允许用户选择最适合他们的图像。我希望在数组的第一个图像上使按钮不可见,然后在第二个图像被刷到后使按钮可见。我尝试过许多我能想到的不同的解决方案,但目前我被难倒了。我可以通过许多不同的途径使按钮不可见,例如在xml文件中将其可见性设置为不可见,还可以通过onCreate中的if…if else语句使按钮不可见,并得出结论,我可能需要某种onclick侦听器。这是我目前的代码

public class MainActivity extends AppCompatActivity {

ViewPager viewPager;

// Method for "That's Me" button, stores selected motivator choice
public void thatsMeClick(View view) {

    Intent intent = new Intent(MainActivity.this, PhysicalCondition.class);
    startActivity(intent);

    SharedPreferences sharedPreferences = this.getSharedPreferences("com.elevenfifty.vali.challengeaccepted",
        Context.MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("motivator", viewPager.getCurrentItem());
    editor.apply();

    int myIntValue = sharedPreferences.getInt("motivator", -1);

    Log.i("motivator", Integer.toString(myIntValue));

}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    // Allows images to fill entire screen including the notification bar area
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

    setContentView(R.layout.activity_main);

    ImageAdapter adapter = new ImageAdapter(this);

    viewPager = (ViewPager) findViewById(R.id.view_pager);
    viewPager.setAdapter(adapter);
    viewPager.setCurrentItem(0);
    viewPager.setPageTransformer(true, new ZoomOutPageTransformer());

    PageIndicator circleIndicator = (CirclePageIndicator) findViewById(R.id.circle_indicator);
    circleIndicator.setViewPager(viewPager);

}
}

我曾尝试将其添加到onCreate中,onCreate用于将按钮设置为不可见,但一旦用户滑动到第二个图像,它就不会恢复可见状态。我觉得onClickListener可以解决这个问题,但我不确定如何让它正常工作,我尝试了几种不同的方法

Button thatsMe = (Button) findViewById(R.id.thats_me_button);

    if (viewPager.getCurrentItem() == 0) {

        thatsMe.setVisibility(View.INVISIBLE);

    } else if (viewPager.getCurrentItem() > 0) {

        thatsMe.setVisibility(View.VISIBLE);

    }
我试着为onClickListener做一些类似的事情,但是没有成功,我希望能得到一些关于如何解决这个问题的帮助,谢谢

public void onClick (View view) {

    final Button thatsMe = (Button) findViewById(R.id.thats_me_button);

    thatsMe.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (viewPager.getCurrentItem() != 0) {

                thatsMe.setVisibility(View.VISIBLE);

            }
        }
    });
}
这是sagits要求我添加的ImageAdapter代码

public class ImageAdapter extends PagerAdapter {

Context context;

// Array of images used for Viewpager
private int[] images = new int[]{R.drawable.mot, R.drawable.mogy,
    R.drawable.hife, R.drawable.loot, R.drawable.roel,
    R.drawable.crish, R.drawable.surk};

ImageAdapter(Context context) {
    this.context = context;
}

@Override
public int getCount() {
    return images.length;
}

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

@Override
public Object instantiateItem(ViewGroup container, int position) {

    ImageView imageView = new ImageView(context);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    imageView.setImageResource(images[position]);

    container.addView(imageView, 0);

    return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((ImageView) object);
}
}
利用。仅在OnCreate中设置将不起作用,因为它将只被调用一次,而不是在页面滚动时调用

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        if(position>0){
            thatsMe.setVisibility(View.VISIBLE);
        }
        else {

            thatsMe.setVisibility(View.INVISIBLE);
        }
    }

    @Override
    public void onPageSelected(int position) {

    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

添加您的ImageAdapter代码。非常感谢,这非常有效。我对Android开发还是相当陌生,完全忘记了OnPageChangeListener。