Расширение класса TableLayout - добавление строк - PullRequest
1 голос
/ 24 января 2011

Я пытаюсь расширить класс TableLayout, чтобы классы автоматически заполняли строки.У меня проблема с тем, что строки, которые я добавляю в пользовательский класс, не отображаются.

Пример.в Activity:

private TextView getTableCell(String text) {
    TextView tv = new TextView(this);
    tv.setText(text);
    tv.setLayoutParams(new LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));

    return tv;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    DatasetTableLayout table = (DatasetTableLayout) findViewById(R.id.table);
    TableRow tr = new TableRow(this);
    tr.addView(getTableCell("activity1"));
    tr.addView(getTableCell("activity2"));
    tr.addView(getTableCell("activity3"));
    table.addView(tr);

Это успешно добавляет строку в таблицу.Однако в моем пользовательском классе:

private TextView getTableCell(String text) {
    TextView tv = new TextView(context);
    tv.setText(text);
    tv.setLayoutParams(new LayoutParams(
        LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT));

    return tv;
}

private void update() {
    TableRow tr = new TableRow(context);
    tr.addView(getTableCell("class1"));
    tr.addView(getTableCell("class2"));
    tr.addView(getTableCell("class3"));
    addView(tr);
}

не успешно добавляет строку.Что ж, он добавляет строку, так как getChildCount () и getChildAt () возвращают эту строку - но она не отображается.

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 24 января 2011

@ theresia (не могу отформатировать текст, если я добавляю комментарий): похоже, что он добавляет TableRow:

for(int i = 0; i < getChildCount(); i++) {
    TableRow row = (TableRow) getChildAt(i);
    for(int j = 0; j < row.getChildCount(); j++) {
        TextView tv = (TextView) row.getChildAt(j);
        Log.e("DatasetTableLayout-data", tv.getText().toString() + " ");
    }
}

дает мне:

01-24 11:03:31.668: ERROR/DatasetTableLayout-data(1624): activity1 
01-24 11:03:31.677: ERROR/DatasetTableLayout-data(1624): activity2 
01-24 11:03:31.698: ERROR/DatasetTableLayout-data(1624): activity3 
01-24 11:03:31.698: ERROR/DatasetTableLayout-data(1624): class1 
01-24 11:03:31.698: ERROR/DatasetTableLayout-data(1624): class2 
01-24 11:03:31.727: ERROR/DatasetTableLayout-data(1624): class3 
0 голосов
/ 24 января 2011

Я думаю, что-то вроде этого: addView(tr); Успешно ли вы добавите TableRow к TableLayout?

Редактировать:

TableLayout tb = new TableLayout(this);
TableRow tr = new TableRow(this);
TextView tv = new TextView(this);
tv.setText("row");
tr.addView(tv);
tb.addView(tr); // this is what I mean
setContentView(tb);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...