Max M
- Forum-Beiträge: 7
27.09.2009, 00:28:23 via Website
27.09.2009 00:28:23 via Website
Hallo zusammen,
ich möchte eine 'dynamische' Activity erstellen.
Zu Beginn besteht die Activity (also das Layout) aus einer Zeile "01: <Eingabefeld>" und einem Button "Wert hinzufügen". (Siehe unten)
Wenn nun der Button "Wert hinzufügen" angeklickt wird, so soll unter der ersten Zeile eine Weiter Zeile "02: <Eingabefeld>" eingefügt werden. Für den nächsten Klick "03: <Eingabefeld>" usw.
Durch jeden Klick auf "Wert hinzufügen" soll also eine neue Zeile (ein neues LinearLayout mit TextView und EditText) eingefügt werden. Dabei sollen die neuen Zeilen genauso ausehen wie die erste Zeile.
Gibt es hier eine elegante Möglichkeit das erste (im XML definierte) LinearLayout "zeile" zu clonen, zu modifizieren und also neue Zeile einzufügen?
Im Moment erstell ich mir im Javacode erst ein neues LinearLayout in das ich dann ein ein neues TextView und ein neues EditText einhänge. Das ist nur irgendwie sehr umständlich. Auch muss ich bei dieser Methode alle Attribute (zB textColor=red) erneut per java-befehl vergeben. ich würde diese werte aber gerne
NUR im Layout-XML flegen... (siehe ganz unten)
Hat da jemand eine Idee?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" />
...
<LinearLayout
android:id="@+id/zeile"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/nummer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="red"
android:text="01:"
/>
<EditText
android:id="@+id/eingabefeld"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:text="Dies ist der erste Wert"
/>
</LinearLayout>
<Button
android:id="@+id/wertHinzufuegen"
android:text="Wert hinzufuegen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
...
</LinearLayout>
-----------------------
So in etwa erstell ich zur Zeit eine neue "Zeile". Dieser Code ist nicht richtig, sonder soll nur verdeutlichen wie umständlich ich da gerade vorgehe ;)
TextView cNr = new TextView(Test.this);
cNr.setText("02:");
cNr.setTextColor(Color.BLUE);
EditText cInput = new EditText(Test.this);
cInput.setText("hier bitte text eingeben");
cInput.setBackgroundResource(android.R.drawable.editbox_background);
LinearLayout newRow = new LinearLayout(Test.this);
newRow.addView(cNr);
newRow.addView(cInput);
newRow.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
LinearLayout testview = (LinearLayout) findViewById(R.id.testlayout);
testview.addView(newRow,
2,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
ich möchte eine 'dynamische' Activity erstellen.
Zu Beginn besteht die Activity (also das Layout) aus einer Zeile "01: <Eingabefeld>" und einem Button "Wert hinzufügen". (Siehe unten)
Wenn nun der Button "Wert hinzufügen" angeklickt wird, so soll unter der ersten Zeile eine Weiter Zeile "02: <Eingabefeld>" eingefügt werden. Für den nächsten Klick "03: <Eingabefeld>" usw.
Durch jeden Klick auf "Wert hinzufügen" soll also eine neue Zeile (ein neues LinearLayout mit TextView und EditText) eingefügt werden. Dabei sollen die neuen Zeilen genauso ausehen wie die erste Zeile.
Gibt es hier eine elegante Möglichkeit das erste (im XML definierte) LinearLayout "zeile" zu clonen, zu modifizieren und also neue Zeile einzufügen?
Im Moment erstell ich mir im Javacode erst ein neues LinearLayout in das ich dann ein ein neues TextView und ein neues EditText einhänge. Das ist nur irgendwie sehr umständlich. Auch muss ich bei dieser Methode alle Attribute (zB textColor=red) erneut per java-befehl vergeben. ich würde diese werte aber gerne
NUR im Layout-XML flegen... (siehe ganz unten)
Hat da jemand eine Idee?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" />
...
<LinearLayout
android:id="@+id/zeile"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/nummer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="red"
android:text="01:"
/>
<EditText
android:id="@+id/eingabefeld"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:text="Dies ist der erste Wert"
/>
</LinearLayout>
<Button
android:id="@+id/wertHinzufuegen"
android:text="Wert hinzufuegen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
...
</LinearLayout>
-----------------------
So in etwa erstell ich zur Zeit eine neue "Zeile". Dieser Code ist nicht richtig, sonder soll nur verdeutlichen wie umständlich ich da gerade vorgehe ;)
TextView cNr = new TextView(Test.this);
cNr.setText("02:");
cNr.setTextColor(Color.BLUE);
EditText cInput = new EditText(Test.this);
cInput.setText("hier bitte text eingeben");
cInput.setBackgroundResource(android.R.drawable.editbox_background);
LinearLayout newRow = new LinearLayout(Test.this);
newRow.addView(cNr);
newRow.addView(cInput);
newRow.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
LinearLayout testview = (LinearLayout) findViewById(R.id.testlayout);
testview.addView(newRow,
2,
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.