android - Dynamisch Sie Zeile hinzufügen, um eine Tabelle mit Daten aus der text-Eintrag
Ich versuche zu erfassen, die Daten aus den text-Eintrag und fügen Sie die Daten in die Tabelle layout und aktualisieren das layout. Wenn ich auf "Hinzufügen" klicken, erscheint ein Dialogfeld mit dem text-Feld. Nachdem ich nichts eingeben, und klicken Sie auf "OK", es sollte eine neue Zeile und aktualisieren Sie die Ansicht.
<TableLayout android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f7ad5d"
android:weightSum="1">
<TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tableRow1">
<Button android:layout_width="100px" android:text="Add" android:textSize="13px" android:layout_height="50px" android:id="@+id/add_button"></Button>
</TableRow>
<TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tableRow2">
<TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:text=" My List"></TextView>
</TableRow>
</TableLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button addBtn = (Button) findViewById(R.id.add_button);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog();
}
});
}
private void update() {
TableLayout table = (TableLayout)findViewById(R.id.table);
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(this);
tv.setText("New Entry");
tr.addView(tv);
table.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
/**
* Show a dialog
*/
private void showDialog() {
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText().toString().trim();
Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show();
finish();
startActivity(getIntent());
update();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
}
Für jetzt, ich bin nicht der Erfassung von Daten aus der Eingabe von text. Ich bin nur versuchen, fügen Sie eine dummy-Daten zu der Tisch-Layouts, die mit dummy-Daten, aber ich bekomme immer "Das angegebene Kind bereits einen Elternteil. Rufen Sie removeView() auf die Eltern zuerst." in dieser Zeile,
Tabelle.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Ich bin ein Anfänger auf android-Entwicklung. Es wäre toll, wenn jemand kann mir einige Tipps zu diesem Thema.
Dank.
InformationsquelleAutor user826323 | 2011-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diesen code für Ihre update-Methode:
Wichtigen Dinge sind:
TableRow
zu einemTableLayout
verwendenTableLayout.LayoutParams
View
zu einemTableRow
verwendenTableRow.LayoutParams
InformationsquelleAutor Esteam
Können Sie haben Blick auf diese
Hoffe es hilft,
Cheers
Ich denke, etwas zu tun mit dem dialog. Ich habe nicht versucht, es für mich selbst noch..nur sehen dieser Frage
InformationsquelleAutor Parth Doshi
Ich gehe davon aus
tr
ist eine variable, die Sie wiederverwenden. Sie müssen erstellen Sie eine neueTableRow
für jede Zeile, die Sie hinzufügen möchten.Wenn Sie wollen, um die Tabelle und Zeile definition in XML, die Sie tun können, mit dem folgenden Ansatz.
Erstellen Sie zunächst 2-layout-Dateien, eine für den Tisch und für Ihre Tabelle, Zeile, wie:
table_header.xml
table_row.xml
Den zusätzlichen Vorteil, dass Stile, die angewendet werden können, um Ihre Tabelle und Zeilen.
Hier, um das hinzufügen der Zeile in die Tabelle ein, die Sie benötigen, initialisieren Sie die Tabelle mit dem folgenden code:
Um eine neue Zeile hinzuzufügen, die Sie verwenden würden, so etwas wie:
Ich fügte hinzu, eine abgespeckte Beispiel von dem, was ich in der Vergangenheit getan haben. Ich hoffe, das hilft.
InformationsquelleAutor brianestey