我正在尝试使用基于图标数组的动态行数来填充TableLayout,但是我无法使行显示在屏幕上。表格应显示5x3的图标网格。我正在使用的代码如下:
Services serv = new Services();
Item[] iconArray = serv.getIcons();
TableLayout table = (TableLayout) findViewById(R.id.table1);
int rowNum = iconArray.length/5;
TableRow rows[]= new TableRow[rowNum];
int count = 0;
for (int i = 0; i < iconArray.length; i++) {
final String name = iconArray[i].name;
final int icon = iconArray[i].icon;
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View v = inflater.inflate(R.layout.icon, null,false);
TextView text = (TextView) v.findViewById(R.id.text);
text.setText(name);
ImageView imageicon = (ImageView) v.findViewById(R.id.icon);
imageicon.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Do some stuff
}
});
Drawable drawicon = getResources().getDrawable(icon);
imageicon.setBackgroundDrawable(drawicon);
if(i == 4) //End of Row
{
count++;
}
if(i == 9) //End of Row2
{
count++;
}
rows[count] = new TableRow(this);
rows[count].addView(v);
table.addView(rows[count]);
}
这不会向屏幕输出任何内容,并且TableLayout保持为空。谁能告诉我我在正确的路线上吗?
任何帮助,将不胜感激。
谢谢
最佳答案
首先,我将为我的行做一个特定的布局:
my_row.xml
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:weightSum="1" >
<ImageView
android:id="@+id/myImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/myText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"" />
</TableRow>
然后,我将循环中的行简单地填入表中:
static TableRow row;
Item[] iconArray = serv.getIcons();
TableLayout table = (TableLayout) myView.findViewById(R.id.table1);
for (int i = 0; i < iconArray.length; i++) {
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
row = (TableRow) inflater.inflate(R.layout.my_row, cont, false);
final String name = iconArray[i].name;
final int icon = iconArray[i].icon;
TextView text = (TextView) v.findViewById(R.id.myText);
text.setText(name);
ImageView imageicon = (ImageView) v.findViewById(R.id.myImg);
imageicon.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Do some stuff
}
});
Drawable drawicon = getResources().getDrawable(icon);
imageicon.setBackgroundDrawable(drawicon);
table.addView(row);
}