问题描述
|
我正在尝试用Java创建一个Android应用程序(使用具有最新Eclipse,ADT和最新Android SDK的Ubuntu 11.10)。
我在其父类的函数中具有以下线程:
new Thread(new Runnable(){
public void run(){
try{
list_items = rtm_instance.update_notes_list(list_items);
list_items.add(\"test\");
} catch (Exception e) {
e.printstacktrace();
}
}
}).start();
list_items
和rtm_instance
是在其中写入线程的类的成员变量。似乎线程内的“ 1”是父类中“ 5”对线程的“ 1”的快照。
尽管rtm_instance.update_notes_list
会按预期返回更新的注释列表,但对list_items
所做的更改似乎并未修改父类中的相同变量。修改“ 1”无非是修改线程内所述变量的副本。
我也希望在父(UI)线程中进行修改,以便Androidlistadapter
可以检测到这些并修改相应的ListView
。如何修改上面发布的子线程的父线程变量list_items
?
谢谢!
解决方法
您可能希望更新发生在UI线程上。您应该从UIThread将可运行对象发布到Handler。或者,您可以调用runOnUiThread。要在父级上具有列表,可以在父级上定义一个名为updateList(String val)的方法,然后调用此方法,而不是直接更改列表。