java - 将 Onclick() 添加到 ArrayList 中的项目

标签 java android arrays onclicklistener

我创建了一个由多个项目(图像和文本)组成的水平滚动条,但我如何才能为这些项目中的每一个添加点击事件。

我已经按照本教程到达了现在的位置: https://www.youtube.com/watch?v=sTJm1Ys9jMI

主要 Activity .java:

 CarouselPicker carouselPicker1, carouselPicker2, carouselPicker3;

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

        carouselPicker1 = (CarouselPicker) findViewById(R.id.carouselPicker1);
        carouselPicker2 = (CarouselPicker) findViewById(R.id.carouselPicker2);
        carouselPicker3 = (CarouselPicker) findViewById(R.id.carouselPicker3);


//Carousel 1 with all images

        List<CarouselPicker.PickerItem> itemsImages = new ArrayList<>();
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher_round));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        CarouselPicker.CarouselViewAdapter imageAdapter = new CarouselPicker.CarouselViewAdapter(this, itemsImages, 0);
        carouselPicker1.setAdapter(imageAdapter);

        //Carousel 2 with all text

        List<CarouselPicker.PickerItem> textItems = new ArrayList<>();
        textItems.add(new CarouselPicker.TextItem("One", 20));
        textItems.add(new CarouselPicker.TextItem("Two", 20));
        textItems.add(new CarouselPicker.TextItem("Three", 20));
        CarouselPicker.CarouselViewAdapter textAdapter = new CarouselPicker.CarouselViewAdapter(this, textItems, 0);
        carouselPicker2.setAdapter(textAdapter);

        //Carousel 3 with both

        List<CarouselPicker.PickerItem> mixItems = new ArrayList<>();
        mixItems.add(new CarouselPicker.TextItem("One", 20));
        mixItems.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher_round));
        mixItems.add(new CarouselPicker.TextItem("Three", 20));
        mixItems.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        CarouselPicker.CarouselViewAdapter mixAdapter = new CarouselPicker.CarouselViewAdapter(this, mixItems, 0);
        carouselPicker3.setAdapter(mixAdapter);

Activity_Main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="MainActivity">

    <in.goodiebag.carouselpicker.CarouselPicker
        android:id="@+id/carouselPicker1"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:background="#FFF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:items_visible="three"

        />

    <in.goodiebag.carouselpicker.CarouselPicker
        android:id="@+id/carouselPicker2"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:background="#FFF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:items_visible="three"
        />

    <in.goodiebag.carouselpicker.CarouselPicker
        android:id="@+id/carouselPicker3"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:background="#FFF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:items_visible="three"
        />
</LinearLayout>

Gradle 脚本:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    //add Library
    implementation "com.github.Vatican-Cameos:CarouselPicker:v1.0"
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io'}
    }
}

如何向 MainActivy.java 中显示的每个图像添加按钮功能?

这是 MainActivity 中的新代码:

package com.example.carouselpicker;

import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

import in.goodiebag.carouselpicker.CarouselPicker;

public class MainActivity extends AppCompatActivity {

    CarouselPicker carouselPicker1, carouselPicker2, carouselPicker3;

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

        carouselPicker1 = findViewById(R.id.carouselPicker1);
        carouselPicker2 = findViewById(R.id.carouselPicker2);
        carouselPicker3 = findViewById(R.id.carouselPicker3);


//Carousel 1 with all images

        List<CarouselPicker.PickerItem> itemsImages = new ArrayList<>();
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher_round));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        itemsImages.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        CarouselPicker.CarouselViewAdapter imageAdapter = new CarouselPicker.CarouselViewAdapter(this, itemsImages, 0);
        carouselPicker1.setAdapter(imageAdapter);

        //Carousel 2 with all text

        List<CarouselPicker.PickerItem> textItems = new ArrayList<>();
        textItems.add(new CarouselPicker.TextItem("One", 20));
        textItems.add(new CarouselPicker.TextItem("Two", 20));
        textItems.add(new CarouselPicker.TextItem("Three", 20));
        CarouselPicker.CarouselViewAdapter textAdapter = new CarouselPicker.CarouselViewAdapter(this, textItems, 0);
        carouselPicker2.setAdapter(textAdapter);

        //Carousel 3 with both

        List<CarouselPicker.PickerItem> mixItems = new ArrayList<>();
        mixItems.add(new CarouselPicker.TextItem("One", 20));
        mixItems.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher_round));
        mixItems.add(new CarouselPicker.TextItem("Three", 20));
        mixItems.add(new CarouselPicker.DrawableItem(R.mipmap.ic_launcher));
        CarouselPicker.CarouselViewAdapter mixAdapter = new CarouselPicker.CarouselViewAdapter(this, mixItems, 0);
        carouselPicker3.setAdapter(mixAdapter);

        carouselPicker1.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //position of the selected item
                switch (position) {
                    case 0:

                        Toast toast = Toast.makeText(getApplicationContext(),
                                "This is a message displayed in a Toast",
                                Toast.LENGTH_SHORT);

                        toast.show();

                        break;

                    case 1:
                        Toast oast = Toast.makeText(getApplicationContext(),
                                "This is a message displayed in a Toast",
                                Toast.LENGTH_SHORT);

                        oast.show();
                        break;

                    case 2:
                        // do smth else
                        break;
                    //case 3, etc...

                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
}

最佳答案

您应该按照此处的说明进行操作:

https://github.com/GoodieBag/CarouselPicker

为每个 Carousel picker 设置监听器,然后使用 switch-case 为每个位置的特定逻辑:

carouselPicker.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //position of the selected item
                switch (position) {
                        case 0:
                            //do smth
                            Toast.makeText(MainActivity.this, "first item selected", Toast.LENGTH_SHORT).show();
                        break;

                        case 1:
                            // do smth else
                            Toast.makeText(MainActivity.this, "second item selected", Toast.LENGTH_SHORT).show();
                        break;
                        //case 3, etc... 


                    }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

关于java - 将 Onclick() 添加到 ArrayList 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54616471/

相关文章:

java - 在底层组件上触发鼠标事件

android - 在 strings.xml 中显示值 '??'

android - 是否可以在其他 android 版本(1.5 到 2.1)上运行 android 2.2 应用程序?

JavaFX : How to reduce window fullscreen of other application

java - 在 Java 中,我很难加载网页

android - 搜索栏拇指中心不在起点

Java 按第三个元素对数组进行排序

c++ - C/C++ 中的指针编译但给出段错误

ios - Swift 2.1 初始化字符串数组的新方法?

Java 如何在构造函数中将接口(interface)作为参数传递?