我正在尝试用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
是写入线程的类的成员变量。似乎线程内的list_items
是list_items
线程中父类中start()
的快照。
虽然rtm_instance.update_notes_list
按预期返回更新的备注列表,但对list_items
所做的更改似乎并未修改父类中的相同变量。修改list_items
只会修改线程中所述变量的副本 。
我希望修改也发生在父(UI)线程中,以便Android ListAdapter
检测到这些并修改相应的ListView
。如何从上面发布的子线程修改父线程变量list_items
?
谢谢!
答案 0 :(得分:1)
您可能希望在UI线程上进行更新。您应该从UIThread向Runler发布一个runnable。或者,您可以调用runOnUiThread。要在父级上创建列表,您可以在父级上定义一个名为updateList(String val)的方法,并调用它而不是直接更改列表。