Recibo datos de json como: "B11, B12, B22, F11, F22, F1, F2, F3"

Entonces tengo 50 íconos en el diseño, cuando obtengo datos como "B11, B12, B22, F11, F22, F1, F2, F3"

Espero que 8 íconos sean VISIBLES y 42 íconos sean INVISIBLES.

Todo lo que creo es usar HashMap, pero en realidad, ¿realmente no sé cómo hacerlo?

Esta foto tiene 49 círculos, cada círculo es ImageView.

49 círculos es INVISIBLE si no obtiene ningún dato.

La foto frontal tiene 27 ciclos, la foto trasera tiene 22 ciclos.

B11 es local en el flanco derecho, F3 es local en el hombro derecho.

Esos círculos visibles / invisibles basados en los datos json que obtengo.

enter image description here

Mi archivo xml:

<RelativeLayout
    android:layout_alignTop="@+id/pv_icon"
    android:layout_height="match_parent"
    android:layout_marginLeft="50dp"
    android:layout_toRightOf="@+id/view_pain_level"
    android:layout_width="match_parent">

    <ImageView
        android:id="@+id/iv_pain_position"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@mipmap/pain_position" />

    <ImageView
        android:id="@+id/body_f1"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="16dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b1"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="266dp"
        android:layout_marginTop="18dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f2"
        android:layout_below="@+id/body_f1"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b2"
        android:layout_below="@+id/body_b1"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="266dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f3"
        android:layout_below="@+id/body_f2"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="84dp"
        android:layout_marginTop="13dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f4"
        android:layout_alignTop="@+id/body_f3"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="44dp"
        android:layout_toRightOf="@+id/body_f3"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b3"
        android:layout_below="@+id/body_b2"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="240dp"
        android:layout_marginTop="12dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b4"
        android:layout_alignTop="@+id/body_b3"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="44dp"
        android:layout_toRightOf="@+id/body_b3"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f5"
        android:layout_below="@+id/body_f2"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f11"
        android:layout_below="@+id/body_f5"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f15"
        android:layout_below="@+id/body_f11"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="40dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f6"
        android:layout_below="@+id/body_f3"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="80dp"
        android:layout_marginTop="12dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f9"
        android:layout_alignTop="@+id/body_f6"
        android:layout_below="@+id/body_f3"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/body_f6"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f8"
        android:layout_alignTop="@+id/body_f9"
        android:layout_below="@+id/body_f5"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/body_f9"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f7"
        android:layout_alignTop="@+id/body_f8"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/body_f8"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f26"
        android:layout_below="@+id/body_f15"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="96dp"
        android:layout_marginTop="7dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f27"
        android:layout_alignTop="@+id/body_f26"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/body_f26"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f10"
        android:layout_below="@+id/body_f6"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="75dp"
        android:layout_marginTop="19dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f12"
        android:layout_alignTop="@+id/body_f10"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="28dp"
        android:layout_toRightOf="@+id/body_f11"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f13"
        android:layout_below="@+id/body_f10"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="18dp"
        android:layout_width="@dimen/body_height"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f14"
        android:layout_alignTop="@+id/body_f13"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="72dp"
        android:layout_toRightOf="@+id/body_f13"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f16"
        android:layout_below="@+id/body_f13"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="65dp"
        android:layout_marginTop="18dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f17"
        android:layout_alignTop="@id/body_f16"
        android:layout_below="@+id/body_f14"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@+id/body_f27"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f18"
        android:layout_below="@+id/body_f26"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="96dp"
        android:layout_marginTop="18dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f19"
        android:layout_alignTop="@+id/body_f18"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="19dp"
        android:layout_toRightOf="@+id/body_f18"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f20"
        android:layout_below="@+id/body_f18"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="96dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f21"
        android:layout_alignTop="@+id/body_f20"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/body_f20"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f22"
        android:layout_below="@+id/body_f20"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="96dp"
        android:layout_marginTop="24dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f23"
        android:layout_alignTop="@id/body_f22"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/body_f22"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f24"
        android:layout_below="@+id/body_f22"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="96dp"
        android:layout_marginTop="40dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_f25"
        android:layout_alignTop="@+id/body_f24"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/body_f24"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b5"
        android:layout_below="@+id/body_b3"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="235dp"
        android:layout_marginTop="13dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b6"
        android:layout_alignTop="@+id/body_b5"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="14dp"
        android:layout_toRightOf="@+id/body_b5"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b7"
        android:layout_alignTop="@+id/body_b6"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/body_b6"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b8"
        android:layout_alignTop="@+id/body_b7"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="13dp"
        android:layout_toRightOf="@+id/body_b7"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b9"
        android:layout_below="@+id/body_b5"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="225dp"
        android:layout_marginTop="35dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b10"
        android:layout_alignTop="@+id/body_b9"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="23dp"
        android:layout_toRightOf="@+id/body_b9"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b11"
        android:layout_alignTop="@+id/body_b10"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/body_b10"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b12"
        android:layout_alignTop="@+id/body_b11"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="21dp"
        android:layout_toRightOf="@+id/body_b11"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b13"
        android:layout_below="@+id/body_b9"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="223dp"
        android:layout_marginTop="30dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b14"
        android:layout_alignTop="@+id/body_b13"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@+id/body_b13"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b15"
        android:layout_alignTop="@+id/body_b14"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/body_b14"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b16"
        android:layout_alignTop="@+id/body_b15"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="22dp"
        android:layout_toRightOf="@+id/body_b15"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b17"
        android:layout_below="@+id/body_b14"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="253dp"
        android:layout_marginTop="29dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b18"
        android:layout_alignTop="@+id/body_b17"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/body_b17"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b19"
        android:layout_below="@+id/body_b17"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="252dp"
        android:layout_marginTop="57dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b20"
        android:layout_alignTop="@+id/body_b19"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/body_b19"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b21"
        android:layout_below="@+id/body_b19"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="252dp"
        android:layout_marginTop="34dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />

    <ImageView
        android:id="@+id/body_b22"
        android:layout_alignTop="@+id/body_b21"
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/body_b21"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />
</RelativeLayout>
1
leona lin 6 feb. 2020 a las 12:48

2 respuestas

La mejor respuesta

Después de entender su pregunta apenas,

Lo que desea hacer es configurar la visibilidad de algunos ImageView sa VISIBLE o INVISIBLE en función de algunos datos que supongo que obtuvo en JSON o en cualquier formato. Una forma de lograr esto es: primero obtenemos nuestros datos y configuramos manualmente los id s de ImageView s en su archivo activity_*.xml.

Luego, actualice dinámicamente la visibilidad en consecuencia.

En su opinión:

<RelativeLayout
    android:layout_alignTop="@+id/pv_icon"
    android:layout_height="match_parent"
    android:layout_marginLeft="50dp"
    android:layout_toRightOf="@+id/view_pain_level"
    android:layout_width="match_parent">

    <ImageView
        android:id="@+id/B11"  <-- Notice here
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@mipmap/pain_position" />

    <ImageView
        android:id="@+id/B12" <-- Notice here
        android:layout_height="@dimen/body_height"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="16dp"
        android:layout_width="@dimen/body_width"
        android:src="@drawable/ic_circle_black_2dp" />


       .
       .
       .

</RelativeLayout>

Entonces en tu Activity:

void setImageViews() {
    String data = getFromSomeComplicatedSource();
    String[] ids = data.split(",");

    for (String imageViewId : ids) {
        int resID = getResources().getIdentifier(imageViewId, "id", getPackageName()); // this will give R.id.ids[i]

        ImageView imageView = findViewById(resID);
        if (imageView != null) {
            imageView.setBackgroundColor(Color.RED);
            imageView.setVisibility(View.VISIBLE);
        }
    }
}

private String getFromSomeComplicatedSource() {
    // after getting data, convert it to String
    String data = "B11,B12,B22,F11,F22,F1,F2,F3";

    return data;
}

De esta manera logras lo que quieres.

0
some user 6 feb. 2020 a las 11:47

Esta es una pregunta común que solo podríamos dar consejos al respecto.

Simplemente cree la vista xml. Después, puede guardar las variables del servicio de API en su clase y decidir qué puntos son visibles y cuáles no.

¡Buena suerte!

0
Amrah Aziz 6 feb. 2020 a las 12:58