Прежде всего, было бы ошибкой делать calgrid = (TableLayout) findViewById(R.id.gridtable);
, а затем calgrid = new TableLayout(ctxt);
, что в основном говорит, что найди это представление, теперь присваивай эту переменную чему-то совершенно другому.Удалите второе утверждение, и оно загрузит таблицу из xml, что вам и нужно.
Во-вторых, я думаю, что было бы неплохо упростить вещи для себя, потому что здесь многое происходит.Вместо того, чтобы делать всю эту работу внутри onClick
слушателя, делайте это в самом методе onCreate
.Кроме того, вы, кажется, используете контекст из GridView, который кажется странным.Возможно, если вы разместили свой файл макета xml, это может помочь объяснить, что вы пытаетесь сделать?
Существует также проблема с индексами в массиве TextViews, так как tView[i]
будет назначать элементы только до 5, номассив содержит 25 элементов.Попробуйте использовать tView[(j*5)+i]
вместо этого.Я не думаю, что это вызывает ваши проблемы, но просто убедитесь, что вы назначаете свои предметы правильно.
Вот пример того, как сделать что-то в соответствии с тем, что вы хотите
setContentView(R.layout.grid);
TableLayout tl = (TableLayout) findViewById(R.id.gridtable);
for (int j = 0; j < 5; j++) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
for (int i = 0; i < 5; i++) {
TextView tView = new TextView(this);
tView.setText("TEXT" + String.valueOf((j * 5) + i + 1));
tView.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
tr.addView(tView);
}
tl.addView(tr, new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
и grid.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridtable"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</TableLayout>
Как только вы включите его в самом задании, вы можете попытаться поместить его в слушатель, подключенный к GridView.Надеюсь, это поможет!