【发布时间】:2014-07-03 04:06:20
【问题描述】:
我正在寻找一种方法来加快创建超过 1000 行的 TableLayout。有没有办法完全在单独的线程上创建 TableLayout 或加快速度?
这是我创建表格的方法:
private void setTable()
{
final Activity activity = this;
final Handler handler = new Handler();
new Thread(new Runnable()
{
@Override
public void run()
{
for (int x = 0; x < rooms.size(); x++)
{
final int inx = x;
handler.post(new Runnable()
{
@Override
public void run()
{
Methods.createRow(table, rooms.get(inx), null, activity);
TableRow row = (TableRow)table.getChildAt(inx);
row.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
if (arg0.getTag() != null && arg0.getTag().getClass() == Integer.class)
select((Integer)arg0.getTag());
}
});
}
});
}
}
}).start();
}
我希望使用 Handler 至少可以让新的 Activity 在表创建之前出现。在创建包含大量行的表时,应用程序似乎冻结了几秒钟。 setTable() 正在我的 Activity 的 onStart() 方法中运行。
Methods.createRow 在传入的 TableView 末尾添加一行。
编辑:
在决定尝试 ListView 之后,我用更少的代码得到了更好的结果。
private void setTable()
{
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, roomNames);
table.setAdapter(adapter);
table.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
select(arg2);
}
});
}
【问题讨论】:
-
您是否考虑过改用
ListView?
标签: android multithreading tablelayout