天天看點

Android UI元件----自定義ListView實作動态重新整理

【正文】

一、具體步驟:

(1)在activiy_main.xml中加一個listview控件;再添加一個item的模闆activity_main_item.xml,加一個底部加載的視圖activity_main_load.xml;

(2)初始化item中的資料;

(3)自定義擴充卡baseadapter;

(4)listiview綁定監聽器onscrolllistener,并實作該監聽器的兩個方法:

public void onscrollstatechanged(abslistview view, int scrollstate)

public void onscroll(abslistview view, int firstvisibleitem,int visibleitemcount, int totalitemcount)

      注:如果螢幕滑到最下面了,并且scrollstate的狀态為:滾動完畢之後listview處于停止狀态(手離開螢幕),此時可以加載新資料了

(5)通過額外的線程,來模拟加載新資料;

(6)新資料加載完成後,通過handle通知主線程,将這個新資料顯示在ui界面上(因為涉及到線程安全問題),此時要調用notifydatasetchanged()方法來重新整理。

       注:handler為線程之間通信的橋梁

二、代碼實作: 

完整版代碼如下:

activiy_main.xml代碼如下:

Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理

注:為優化起見,第9行的代碼一定要寫成"match_parent",而不是“wrap_content”(解釋略)

activity_main_item.xml代碼如下:(作為一個item的模闆)

Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理

activity_main_load.xml代碼如下:(作為加載時底部的顯示)

Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理

mainactivity.java代碼如下:

Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理

<code>運作後,顯示結果如下:</code>

下圖依次為:剛運作時、滑動到底部時、重新整理之後的效果

Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理
Android UI元件----自定義ListView實作動态重新整理

三、總結:

監聽事件處理的接口:onscrolllistener

adapter的重新整理方法:notifydatasetchanged()

繼續閱讀