Как динамически добавлять поля в таблицу в Android? - PullRequest
1 голос
/ 30 января 2012

Мне нужен пользователь для ввода координат графика. Проблема в том, что я не знаю, сколько. Поэтому я хочу иметь кнопку «Добавить точку», которая вставляет два поля (для координат x и y) в новую строку таблицы, чтобы пользователь мог добавить больше координат.

Кроме того, как мне определить эти новые поля, когда я хочу получить от них данные? Обычно я уже знаю идентификатор поля и вызываю их с помощью findViewById (R.id.ID_here); Что мне теперь делать, чтобы их идентифицировать?

Я записываю все эти координаты в файл, поэтому, если есть способ записать их без идентификации каждой из них, пожалуйста, помогите.

EDIT:

Я не могу получить в полях edittext следующие параметры макета:

android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="numberDecimal"

Вот мой код JAVA для того же:

            TableLayout table = (TableLayout) findViewById(R.id.TableLayout1);

            TableRow tr = new TableRow(this);
            LinearLayout.LayoutParams trparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            tr.setLayoutParams(trparams);

            cg[i] = new EditText(this);
            weight[i] = new EditText(this);
            LinearLayout.LayoutParams fieldparams = new LinearLayout.LayoutParams(100, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
            cg[i].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
            weight[i].setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
            cg[i].setLayoutParams(fieldparams);
            weight[i].setLayoutParams(fieldparams);

            tr.addView(cg[i]);
            tr.addView(weight[i]);

            table.addView(tr);

Пожалуйста, помогите, если можете.

1 Ответ

7 голосов
/ 30 января 2012

Вы можете создать новые строки (или любой другой вид) следующим образом:

TableRow tr = new TableRow(myContext); // usually myContext is 'this'

затем вы добавляете tr к родительскому представлению

TableLayout myTable = findViewById(R.id.TableLayout1);

LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tr.setLayoutParams(lp);
myTable.addView(tr);

Вам необходимо добавить layoutParams в представление перед его добавлением, поскольку все представления должны, как минимум, указать ширину макета и высоту макета.

Если вам нужно добавить дочерние элементы в вашу строку (очевидно, вы захотите, какая польза от этого в противном случае), вы просто повторяете процесс, за исключением того, что теперь вы создаете EditText. Как только вы это сделаете, у вас автоматически будет ссылка на него, так как вы его создали! :)

Мне неясно, что вы подразумеваете под последней частью вашего вопроса, где вы записываете их в файл. Пожалуйста, уточните.

О, и добро пожаловать в стек ... если вы найдете ответы полезными, не забудьте проголосовать за них и / или пометить их как правильные.

...