繁体   English   中英

如何在Android Studio中的viewpager中的每个图像上实现可点击?

[英]How to achieve Clickable on each image inside the viewpager in Android studio?

我是 Android Studio 的新手,我一直在学习 viewpager 来创建图像滑块。 我的图像滑块在每张幻灯片中有 4 个图像。 我曾在适配器中尝试过 view.setOnclick,但它只设置了整个幻灯片上的点击(而不是每个图像)。 我还尝试通过 id 获取每个图像并尝试可点击但无法正常工作。

这是我的代码:

主活动.java:

public class MainActivity extends AppCompatActivity {

    ViewPager viewPager;
    Adapter adapter;
    List<Model> models;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        models = new ArrayList<>();
        models.add(new Model(R.raw.black,R.raw.captain,R.raw.lone,R.raw.iron));
        models.add(new Model(R.raw.iron,R.raw.lone,R.raw.black,R.raw.captain));


        adapter = new Adapter(models, this);

        viewPager = findViewById(R.id.viewpager1);
        viewPager.setAdapter(adapter);
}

适配器.java:

public class Adapter extends PagerAdapter {

    private List<Model> models;
    private LayoutInflater layoutInflater;
    private Context context;

    public Adapter(List<Model> models, Context context) {
        this.models = models;
        this.context = context;
    }

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

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        layoutInflater = LayoutInflater.from(context);

        View view = layoutInflater.inflate(R.layout.item, container, false);

        ImageView image1,image2,image3,image4;

        image1 = view.findViewById(R.id.image);
        image2 = view.findViewById(R.id.image1);
        image3 = view.findViewById(R.id.image2);
        image4 = view.findViewById(R.id.image3);

        image1.setImageResource(models.get(position).getImage());
        image2.setImageResource(models.get(position).getImage1());
        image3.setImageResource(models.get(position).getImage2());
        image4.setImageResource(models.get(position).getImage3());

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(position == 0) {
                    AlertDialog.Builder alert = new AlertDialog.Builder(context).setTitle("Alert").setMessage("Hi").setCancelable(true);
                    alert.show();
                } else if(position == 1) {
                    AlertDialog.Builder alert = new AlertDialog.Builder(context).setTitle("Alert").setMessage("Hi 2").setCancelable(true);
                    alert.show();
                }
            }
        });

        container.addView(view,0);

        return view;
    }

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

模型.java:

public class Model {

    private int image;
    private int image1;
    private int image2;
    private int image3;

    public Model(int image, int image1,int image2,int image3) {
        this.image = image;
        this.image1 = image1;
        this.image2 = image2;
        this.image3 = image3;
    }

    public int getImage() {
        return image;
    }

    public void setImage(int image) {
        this.image = image;
    }

    public int getImage1() {
        return image1;
    }

    public void setImage1(int image1) {
        this.image1 = image1;
    }

    public int getImage2() {
        return image2;
    }

    public void setImage2(int image2) {
        this.image2 = image2;
    }

    public int getImage3() {
        return image3;
    }

    public void setImage3(int image3) {
        this.image3 = image3;
    }
}

代替

view.setOnClickListener(...

OnClickListener设置为您拥有的每个图像

image1.setOnClickListener(...
image2.setOnClickListener(...
image3.setOnClickListener(...
image4.setOnClickListener(...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM