我在我的布局中有数百个CheckBox小部件,现在我正在尝试对它们进行反转,所以如果检查它不会被检查,反之亦然。显然,这样繁重的工作应该在单独的线程中完成,但问题在于所有的工作实际上都发生在UI上。线程代码的一部分:Android从第二个线程访问用户界面
for (int x = 0; x < list.getChildCount(); ++x)
{
final WListRowTarget curRow = (WListRowTarget)list.getChildAt(x);
curRow.post(new Runnable()
{
public void run()
{
try
{
curRow.getCheckBox().setChecked(!curRow.getCheckBox().isChecked());
}
catch (Exception e) {}
}
});
}
,这个线程实际上能做的就是通过列表循环和张贴了Runnable每一个复选框发现的唯一的事情。问题是,所有这些Runnables几乎同时到达UI线程,因此它们都会立即执行......应用程序的行为与我在UI线程中运行上述代码完全相同 - 一切都冻结。一个可能的解决方案是在每个复选框后休眠几毫秒,以便Runnable可以执行,并且UI将有时间处理事件......但它更像是一种黑客攻击。
我该如何解决这个问题?
由于提前, Snowak
您是否使用了列表视图中显示的复选框? –