Masseninitialisierung leicht gemacht / Loop-Through IDs

  • 0 Antworten
  • Letztes Antwortdatum
ui_3k1

ui_3k1

Gesperrt
197
Guten Morgen,

ich habe mal wieder etwas Neues ausprobiert und möchte einen kleinen Einblick geben, wie man recht fix massenhaft Ressourcen initialisieren kann:

Die Methode ist simple und logisch, allerdings hat es der Code etwas in sich, da wirklich jedes kleinste Zeichen bedacht werden muss.

In meinem Beispiel werden acht TextViews initialisiert.

Java-Code
Code:
TextView textView[] = new TextView[8];
        for (int i = 0; i < 8; i++)
            textView[i] = new TextView(this);

        String ids[] = new String[8];
        for (int i = 0; i < 8; i++)
            ids[i] = "textView" + Integer.toString(i);

        for (int i = 0; i < 8; i++) {
            int resID = getResources().getIdentifier(ids[i], "id", "de.clevercomputing.shootank"); // hier euer Package-Name
            textView[i] = (TextView) findViewById(resID);
        }
Die .xml-Datei dazu:
Code:
<TextView
            android:id="@+id/textView[COLOR=Red][B]0[/B][/COLOR]" // <- [B]hier aufpassen!![/B]
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
        
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TextView
            android:id="@+id/textView7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
Wichtig(!): Eclipse hat die Unart neue Elemente erstmal mit einer "1" zu versehen, wenn man sie in der grafischen Oberfläche "hineinzieht". Das verändert die ganze Sachelage, da die Arrays in [0] den ersten Wert bekommen und macht somit die Initialisierung fehlerhaft, also am besten in der xml bei NULL anfangen und man hat keinen Stress). :)

Ob das Verfahren nun sinnvoll ist oder nicht, sei dahin gestellt. Oft lassen sich viele Elemente mit der Wahl des entsprechenden Layouts (oder auf andere Art und Weise) vermeiden.
 
Zurück
Oben Unten