我试图在执行过程中向一空表中添加一堆行。我尝试使用一些测试代码,但由于某些原因,屏幕保持空白。如果我在.XML中有元素,则它们会显示,但表本身不会显示,除非我也在.XML文件中添加一些行/元素。
我真的很感谢您的帮助。
我的课扩展了Activity。
这是更新表格的代码:
public Runnable UpdateUserList = new Runnable() {
public void run() {
TableLayout userTable = (TableLayout) findViewById(R.id.listOfUsers);
for (String user : userNames) {
TableRow row = new TableRow(getBaseContext());
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
TextView field = new TextView(getBaseContext());
field.setText(user);
field.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
row.addView(field);
userTable.addView(row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
}
};
我从线程中使用处理程序以这种方式调用代码:
mHandler.post(UpdateUserList);
该代码不会运行,并且不会显示任何错误。
这是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:background="@drawable/main_bg"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_marginTop="10px" android:gravity="center_horizontal"
android:layout_weight="1" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:text="@string/userList"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textSize="25px" />
</LinearLayout>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/listOfUsers">
</TableLayout>
</LinearLayout>
任何帮助将非常有用。我现在很困。
编辑:使用ListView
private Runnable UpdateUserList = new Runnable() {
public void run() {
ListView userTable = (ListView) findViewById(R.id.listOfUsers);
userTable.setAdapter(new ArrayAdapter<String>(getBaseContext(),
R.layout.connectserver, userNames));
}
};
和XML:
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/listOfUsers" />
而不是TableLayout。
最佳答案
我认为您会发现使用List而不是TableLayout会更容易。它是为容纳多个项目而构建的,可以轻松地与java.util.List或Array集成。其次,更重要的是,如果您拥有的项目多于可见项目,那么它的存储效率将大大提高。
使用List时,它只实例化可见行的视图+ 1表示N列表。如果使用TableLayout显示相同的列表,则它实例化N个视图。因此,随着列表的增加,TableLayout的内存使用量也会增加。列表并非如此。无论列表中有多少项,都是一样的。
此外,它提供了更好的方式来跟踪用户单击某个项目时选择了哪些项目。 TableLayout对此没有任何帮助,因此您必须使用自己的机制进行选择。
关于android - 在执行期间将行添加到空的TableLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4384071/