Как установить ImageDrawable для View

Нуб на Java, поэтому у меня ограниченные знания. У меня есть 2 RelativeLayouts, которые будут содержать изображения 13-карточной руки. Один для всех карт и один слегка смещенный, который показывает, какие карты можно разыграть. XML довольно прост

           <!--Player viewable cards-->
    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="200dp"
        android:layout_height="680dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="100dp"
        android:layout_marginLeft="15dp"
        android:id="@+id/rlUserViewCards">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="85dp"
            android:src="@drawable/c001"
            android:rotation="90"
            android:tag="1"
            android:id="@+id/card1"
            android:clickable="false">
        </ImageView>

        <ImageView
            android:layout_width="100dp"
            android:layout_height="85dp"
            android:src="@drawable/c002"
            android:rotation="90"
            android:id="@+id/card2"
            android:layout_below="@+id/card1"
            android:layout_marginTop="-65dp"
            android:clickable="false">
        </ImageView>

и так далее для 13 изображений. Затем я могу создать представление об относительном расположении, которое проходит через детей, делая изображения невидимыми / видимыми, кликабельными или нет. Кажется ли это хорошим подходом?

Если это так, моя проблема при первой установке относительной разметки состоит в том, что я могу сделать выше, а также установить тег со значением карты, я не могу понять, как получить целое число для ImageView через findViewById.

            userViewCards = (RelativeLayout) findViewById(R.id.rlUserViewCards);
    userPickCards = (RelativeLayout) findViewById(R.id.rlUserPlayCards);
    View v = userViewCards.getChildAt(0);
    Resources res = getResources();
    int resId = res.getIdentifier("s204", "drawable", getPackageName());  
    Drawable drawable = ResourcesCompat.getDrawable(getResources(), res.getIdentifier("s204", "drawable", getPackageName()), null);
    ImageView insertImage = (ImageView) findViewById(??);  
    insertImage.setImageDrawable(drawable);

Может кто-то указать мне верное направление?

Спасибо!

1 ответ

Вы можете установить значение тега для imageView и получить его в своей деятельности следующим образом

<ImageView
        android:layout_width="100dp"
        android:layout_height="85dp"
        android:src="@drawable/c001"
        android:rotation="90"
        android:tag="1"
        android:id="@+id/card1"
        android:clickable="false">


@OnClick({R.id.card1, R.id.card2, R.id.card3, R.id.card4})
public void selectedCard(View view) {

    String selectedCard = view.getTag().toString();
    Log.d(TAG, "Mode Selected : " + mode);

    switch (Integer.parseInt(mode)) {
        case Constant.Card1:
            // Do something here
            break;
        case Constant.Card2:
            // Do something here
            break;
        case Constant.Card3:
            // Do something here
            break;
        case Constant.Card4:
            // Do something here
    }
}

Примечание: здесь я использую нож, поэтому @OnClick()

Другие вопросы по тегам