碰上了一个很好玩的bug,listview监听的是原始数据源的数据!!!!,还记得rrz里面签到时老是不回显么,最后解决方式是为了保证(List)siDays是同一数据源 siDays.addAll(siDays2);wa ka ka 聪明 一个典型的错误是: list1 = new String[]{"listView1 item"}; ap1 = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list1); listView1.setAdapter(ap1); list1 = new String[]{"new listView1 item"}; ap1.notifyDataSetChanged(); 我一直以为ap1会监听list1的变化,重新初始化list1,然后执行相应的更新,现在才知道不对,ap1监听的是new String[]{"listView1 item"}的变化。 换种说法就是ap1本身会保存一个对原始数据源(new String[]{"listView1 item"})的内部引用inner_list1。 list1 = new String[]{"new listView1 item"};相当与切断了list1与原始数据源(new String[]{"listView1 item"})的关系,因此之后调用notifyDataSetChanged并不会起作用,因为list1 和inner_list1已经是存在于堆上的完全不同的两个对象了,自然而然,notifyDataSetChanged是不会生效的了,仅此牢记! |
|
来自: 一戒745zia4sgs > 《bug》