notifyDataSetChanged不起作用

2021-07-26 12:21:45 字數 726 閱讀 5969

最近在開發android乙個專案的時候,發現有時候notifydatasetchanged不起作用。後來發現是我理解錯了。

乙個典型的錯誤是:

list1 = new string;

ap1 = new arrayadapter(this

,android.r.layout.******_list_item_1,list1);

listview1.setadapter(ap1);

list1 = new string;

ap1.notifydatasetchanged();

我一直以為ap1會監聽list1的變化,重新初始化list1,然後執行相應的更新,現在才知道不對,ap1監聽的是new string的變化。

換種說法就是ap1本身會儲存乙個對原始資料源(new string)的內部引用inner_list1。

list1 = new string;相當與切斷了list1與原始資料源(new string)的關係,因此之後呼叫notifydatasetchanged並不會起作用,因為list1 和inner_list1已經是存在於堆上的完全不同的兩個物件了,自然而然,notifydatasetchanged是不會生效的了,僅此牢記!

listview.removeallviews();

listview.setadapter(adapter);

adapter.notifydatasetchanged();

elementUI rule驗證無效 不起作用

因為專案中遇到複雜的form表單傳輸 具體最終提交格式如下 表單 forminfo 物流資訊 deliveryinfo 開票資訊相關 invoiceflag invoiceinfo 發現所有表單驗證不起作用了 以ordertype為例 頁面 js rules prop和rules裡的校驗名稱是一樣的...

div巢狀引起的margin top不起作用

巢狀div中margin top轉移問題的解決辦法 在這兩個瀏覽器中,有兩個巢狀關係的div,如果外層div的父元素padding值為0,那麼內層div的margin top或者margin bottom的值會 轉移 給外層div。上部層解決辦法 1 在父層div加上 overflow hidden...

mysql表中設定了default不起作用

參考部落格 博主 享受程式設計 博主 sdxushuxun 我平時在設定 時,例如設定成績預設值為0,但我傳入資料發現資料仍然為null 很是不理解 經過參考查詢得出一些小經驗,記錄一下 1 插入表中資料時,傳遞的引數為null或者 都不可以,他們會直接存入資料表中 2 方便的設定預設值是 在對應的...