0

Здравствуйте. Есть такой код:

            TextView NumbZK = (TextView)findViewById(R.id.editText2);   
            final int Numb = Integer.parseInt(NumbZK.getText().toString());

            TextView modN = (TextView)findViewById(R.id.editText1); 
            final int N = Integer.parseInt(modN.getText().toString());  
            TableLayout table = (TableLayout) findViewById(R.id.tL1);     
            TableRow tr = (TableRow) findViewById(R.id.tR1);
            TextView tv = (TextView) findViewById(R.id.field1);

            int[] mas = new int[N];
            for (int i=0; i<N;i++){
                mas[i]=(Numb%(i+1));
                table.removeView(tr);
                tr.removeView(tv);
                tv.setText((i+1)+") "+(Numb%(i+1)));
                tr.addView(tv);
                table.addView(tr);

            }

Идея в том, чтоб добавлять строки таблицы динамически в цикле. В итоге должно получится что-то в этом роде:

1) [Numb mod 1]
2) [Numb mod 2]
...
3) [Numb mod 20]

1 ответ 1

2

Адаптеры подойдут в случае виджета, производного от AdapterView (ListView, GridView, Spinner, Gallery). У автора же используется TableLayout, который к адаптерам отношения не имеет.

Для TableLayout могу посоветовать сделать так: создать xml с разметкой одной строки, сам TableLayout оставить пустым, а затем в нужном месте кода создавать экземпляр строки с помощью LayoutInflater и добавлять его в TableLayout.

Чтобы было понятнее, приведу пример.

Файл разметки активити res/layout/main.xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/table"
        android:layout_width="fill_parent" android:layout_height="wrap_content">
</TableLayout>

Файл разметки строки таблицы res/layout/table_row.xml:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:text="" />
    <TextView android:text="" />
</TableRow>

Файл активити src/TableActivity.java:

public void addRow(String cell0, String cell1) {
    TableLayout tableLayout = (TableLayout) findViewById(R.id.table);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TableRow tr = (TableRow) inflater.inflate(R.layout.table_row, null);
TextView tv = (TextView) tr.getChildAt(0);
    tv.setText(cell0);
    tv = (TextView) tr.getChildAt(1);
    tv.setText(cell1);
    tableLayout.addView(tr);
}

Остается вызывать в цикле метод addRow и передавать ему нужные данные.

Или же заменять TableLayout на GridView и использовать его и адаптер.

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.