Не отображается табличное представление Android

#android #view #tablelayout #visible

#Android #Вид #табличное представление #видимый

Вопрос:

У меня есть класс, содержимое которого настроено на макет, в котором есть несколько кнопок и табличное представление.

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

Однако таблица не отображается. Какой унизительно простой факт я упускаю?

Вот класс, содержимое которого установлено в макет:

 public class TesterActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TableLayout table = (TableLayout) findViewById(R.id.table);
        table = TableHelper.getTable_BINARY_NUMBERS(getApplicationContext(), 5, 25);
    }
}
  

И вот вспомогательный класс, который создает содержимое таблицы:

 public class TableHelper {

    public static TableLayout getTable_BINARY_NUMBERS(Context context, int numRows, int numCols) {

        TableLayout table = new TableLayout(context);

        table.setStretchAllColumns(true);  
        table.setShrinkAllColumns(true);  

        TableRow[] rows = new TableRow[numRows];
        for (int row=0; row<numRows; row  ) {
            rows[row] = new TableRow(context);

            for (int col=0; col<numCols-1; col  ) {
                TextView num = new TextView(context);
                num.setText("0");
                rows[row].addView(num);
            }
            TextView rowText = new TextView(context);
            rowText.setText("Row "   (row   1));
            rowText.setTextAppearance(context, android.R.style.TextAppearance_Small);
            rows[row].addView(rowText);
            rows[row].setPadding(0, 50, 0, 0);
            table.addView(rows[row]);
        }
        return table;
    }
}
  

Ответ №1:

Вместо того, чтобы возвращать новый макет таблицы, передайте тот, который вы сразу получите, своему getTable_BINARY_NUMBERS() и измените его в своем методе вместо возврата совершенно нового.

Ответ №2:

TableLayout Возвращаемый вашим вспомогательным классом не совпадает с тем, TableLayout который вы видите.

при этом создается setContentView(R.layout.main); экземпляр TableLayout , который вы присваиваете переменной table. TableLayout Исходящий из вашего вспомогательного класса экземпляр является другим.

Комментарии:

1. итак, должен ли я передавать таблицу в качестве аргумента в метод моего вспомогательного класса?

2. Я не уверен, что именно вы пытаетесь сделать. Но я передаю table может помочь вам.