簡體   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