Masseninitialisierung leicht gemacht / Loop-Through IDs

  • 0 Antworten
  • Neuester Beitrag
Diskutiere Masseninitialisierung leicht gemacht / Loop-Through IDs im Android App Entwicklung im Bereich Betriebssysteme & Apps.
ui_3k1

ui_3k1

Gesperrt
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.