Как применить событие Clickable к ImageView, которое заполняется случайным событием рисования? - PullRequest
0 голосов
/ 27 февраля 2020

Текущая функциональность и задаваемый вопрос (увеличьте громкость) (~ 60 сек c в длину): https://youtu.be/PUzCh7t8Kac

Цель: Когда раздаются 3 случайные карты, я хочу пользователь нажимает на каждую фотографию и перенаправляется на другое задание с указанием животного c.

Недостаток знаний: как прикрепить событие, реагирующее на клики, к каждой Карте в списке, а не только к просмотру изображения? Есть ли более простой способ достичь моей цели, когда вы будете перенаправлены в действие, которое будет заполняться в зависимости от того, какая карта нажата? Мне больше нравится этот вариант, но он кажется более продвинутым, чем 44 отдельных вида деятельности.

XML код:

<RelativeLayout 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:background="@color/colorPrimaryDark"
    tools:context=".draw_1">


    <ImageView
        android:id="@+id/draw_3_cards"
        android:layout_width="160dp"
        android:layout_height="235dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="5dp"
        android:layout_marginBottom="5dp"
        android:contentDescription="@string/todo2"
        android:src="@drawable/card_back_small"
        android:layout_alignParentLeft="true"
        android:layout_marginStart="5dp" />

    <Button
        android:id="@+id/return_home"
        android:layout_width="78dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:text="@string/return_home" />


    <LinearLayout
        android:id="@+id/card_layout"
        android:layout_width="195dp"
        android:layout_height="730dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:orientation="vertical">


        <ImageView
            android:id="@+id/future_card"
            android:layout_width="fill_parent"
            android:layout_height="240dp"
            android:layout_weight="1"
            android:contentDescription="@string/todo"
            android:padding="5dp"
            android:src="@drawable/card_back" />

        <ImageView
            android:id="@+id/present_card"
            android:layout_width="fill_parent"
            android:layout_height="240dp"
            android:layout_weight="1"
            android:contentDescription="@string/todo"
            android:padding="5dp"
            android:src="@drawable/card_back" />

        <ImageView
            android:id="@+id/past_card"
            android:layout_width="fill_parent"
            android:layout_height="240dp"
            android:layout_weight="1"
            android:contentDescription="@string/todo"
            android:padding="5dp"
            android:src="@drawable/card_back" />

    </LinearLayout>


</RelativeLayout>

JAVA код:

  ImageView draw_3_cards, future_card, present_card, past_card;

    ArrayList<Integer> cards;

    private Button button;


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

        draw_3_cards = (ImageView) findViewById(R.id.draw_3_cards);
        future_card = (ImageView) findViewById(R.id.future_card);
        present_card = (ImageView) findViewById(R.id.present_card);
        past_card = (ImageView) findViewById(R.id.past_card);

        future_card.setVisibility(View.INVISIBLE);
        present_card.setVisibility(View.INVISIBLE);
        past_card.setVisibility(View.INVISIBLE);

        cards = new ArrayList<>();

        cards.add(101);
        cards.add(102);
        cards.add(103);
        cards.add(104);
        cards.add(105);
        cards.add(106);
        cards.add(107);
        cards.add(108);
        cards.add(109);
        cards.add(110);
        cards.add(111);
        cards.add(112);
        cards.add(113);
        cards.add(114);
        cards.add(115);
        cards.add(116);
        cards.add(117);
        cards.add(118);
        cards.add(119);
        cards.add(120);
        cards.add(121);
        cards.add(122);
        cards.add(123);
        cards.add(124);
        cards.add(125);
        cards.add(126);
        cards.add(127);
        cards.add(128);
        cards.add(129);
        cards.add(130);
        cards.add(131);
        cards.add(132);
        cards.add(133);
        cards.add(134);
        cards.add(135);
        cards.add(136);
        cards.add(137);
        cards.add(138);
        cards.add(139);
        cards.add(140);
        cards.add(141);
        cards.add(142);
        cards.add(143);
        cards.add(144);

        //Draw 3 Cards Button
        draw_3_cards.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //shuffle the cards
                Collections.shuffle(cards);

                //deal the first 3 cards
                assignImages(cards.get(0), future_card);
                assignImages(cards.get(1), present_card);
                assignImages(cards.get(2), past_card);

                future_card.setVisibility(View.VISIBLE);
                present_card.setVisibility(View.VISIBLE);
                past_card.setVisibility(View.VISIBLE);

            }
        });

        //Future Card Button
        future_card.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openanteater();
            }
        });

        //Return Home Button
        button = (Button) findViewById(R.id.return_home);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                opendraw_page();
            }
        });

    }



    public void assignImages(int card, ImageView image){
        switch (card){
            case 101:
                image.setImageResource(R.drawable.anteater1);
                break;
            case 102:
                image.setImageResource(R.drawable.antelope2);
                break;
            case 103:
                image.setImageResource(R.drawable.armadillo3);
                break;
            case 104:
                image.setImageResource(R.drawable.badger4);
                break;
            case 105:
                image.setImageResource(R.drawable.bat5);
                break;
            case 106:
                image.setImageResource(R.drawable.beaver6);
                break;
            case 107:
                image.setImageResource(R.drawable.bison7);
                break;
            case 108:
                image.setImageResource(R.drawable.bobcat8);
                break;
            case 109:
                image.setImageResource(R.drawable.camel9);
                break;
            case 110:
                image.setImageResource(R.drawable.chimpmunk10);
                break;
            case 111:
                image.setImageResource(R.drawable.deer11);
                break;
            case 112:
                image.setImageResource(R.drawable.dolphin12);
                break;
            case 113:
                image.setImageResource(R.drawable.elephant13);
                break;
            case 114:
                image.setImageResource(R.drawable.fox14);
                break;
            case 115:
                image.setImageResource(R.drawable.giraffe15);
                break;
            case 116:
                image.setImageResource(R.drawable.gorilla16);
                break;
            case 117:
                image.setImageResource(R.drawable.grizzlybear17);
                break;
            case 118:
                image.setImageResource(R.drawable.hippopotamus18);
                break;
            case 119:
                image.setImageResource(R.drawable.horse19);
                break;
            case 120:
                image.setImageResource(R.drawable.javelina20);
                break;
            case 121:
                image.setImageResource(R.drawable.kangaroo21);
                break;
            case 122:
                image.setImageResource(R.drawable.koala22);
                break;
            case 123:
                image.setImageResource(R.drawable.lemur23);
                break;
            case 124:
                image.setImageResource(R.drawable.leopard24);
                break;
            case 125:
                image.setImageResource(R.drawable.lion25);
                break;
            case 126:
                image.setImageResource(R.drawable.llama26);
                break;
            case 127:
                image.setImageResource(R.drawable.manatee27);
                break;
            case 128:
                image.setImageResource(R.drawable.moose28);
                break;
            case 129:
                image.setImageResource(R.drawable.mouse29);
                break;
            case 130:
                image.setImageResource(R.drawable.orca30);
                break;
            case 131:
                image.setImageResource(R.drawable.otter31);
                break;
            case 132:
                image.setImageResource(R.drawable.panda32);
                break;
            case 133:
                image.setImageResource(R.drawable.platypus33);
                break;
            case 134:
                image.setImageResource(R.drawable.prairiedog34);
                break;
            case 135:
                image.setImageResource(R.drawable.rabbit35);
                break;
            case 136:
                image.setImageResource(R.drawable.raccoon36);
                break;
            case 137:
                image.setImageResource(R.drawable.ram37);
                break;
            case 138:
                image.setImageResource(R.drawable.rhinoceros38);
                break;
            case 139:
                image.setImageResource(R.drawable.seal39);
                break;
            case 140:
                image.setImageResource(R.drawable.skunk40);
                break;
            case 141:
                image.setImageResource(R.drawable.sloth41);
                break;
            case 142:
                image.setImageResource(R.drawable.tiger42);
                break;
            case 143:
                image.setImageResource(R.drawable.whale42);
                break;
            case 144:
                image.setImageResource(R.drawable.wolf44);
                break;

        }
    }

    public void opendraw_page() {
        Intent intent = new Intent(this, draw_page.class);
        startActivity(intent);

    }

    public void openanteater(){
        Intent intent = new Intent (this, anteater.class);
        startActivity(intent);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...