Я пытаюсь получить данные из текстовой записи, добавить данные в макет таблицы и обновить макет. Когда я нажимаю кнопку «Добавить», появляется диалоговое окно с текстовым полем. После того, как я что-то введу и нажму «ОК», он должен создать новую строку и обновить представление.
<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();
}
Пока я не собираю данные из текстовой записи. Я просто пытаюсь добавить фиктивные данные в макет таблицы с фиктивными данными, но я продолжаю получать сообщение «У указанного дочернего элемента уже есть родительский элемент. Сначала необходимо вызвать removeView () для родительского дочернего элемента». на этой линии
table.addView (tr, новый TableLayout.LayoutParams (LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
Я новичок в разработке Android. Было бы здорово, если бы кто-нибудь дал мне несколько советов по этому поводу.
Спасибо.