1. 程式人生 > >android開發(3):列表listview的實現 | 下拉刷新

android開發(3):列表listview的實現 | 下拉刷新

imp 就是 觸發 能夠 希望 封裝 介紹 組成 ctu

APP裏面的列表太常用了,系統提供的listview或grideview可以做到。另外,我希望這個列表能夠下拉時觸發刷新,於是考慮使用封裝了這個功能的開源項目,這裏介紹這個:
https://github.com/Yalantis/Phoenix

這是一個支持下拉刷新的控件,裏面包括了ListView。

(1)引入下拉刷新庫

同樣,先引入這個庫,在app/build.gradle的dependencies中增加一行:

implementation ‘com.yalantis:phoenix:1.2.3‘

(2)xml中設計下拉刷新控件

然後在界面中使用這個控件,比如“知音”這個APP是在Fragment中使用,部分xml是這樣的:

技術分享圖片

對於它的使用,你也可以參考它在github上的說明。

(3)代碼中使用下拉刷新控件

在代碼中,處理觸發刷新的事件:
技術分享圖片

至此,界面就出現了一個能夠下拉刷新的控件。但是,數據(包括刷新出來的數據)最終要在ListView上顯示出來,所以,下一步就是使用ListView。

(4)使用ListView來顯示內容

跟iOS的tableview一樣,ListView也是由一個個cell(item)組成的,需要設計這個cell怎麽顯示,於是,可以寫一個xml,比如叫tianya_listcell.xml:
技術分享圖片
技術分享圖片
技術分享圖片

這個xml是cell顯示的樣式,除了樣式,還要有內容。ListView從適配器取內容,所以要寫一個適配器類來提供內容(重寫某個方法)。

先定義一個內容類,這裏簡單演示,只設置一個圖片。定義的類是這樣的:
技術分享圖片

最終要使用這個內容類,生成一個list,再設置給listview的適配器。

然後,寫listview的適配器,由它提供繪制內容:
技術分享圖片
技術分享圖片

最後,使用listview:
技術分享圖片

總體的思路是,listview向adapter詢問繪制多少個item(所以要給adapter設置好數據列表),再問adapter索要繪制的view(這個view從xml中生成,就是一個item),我們可以重寫這個getView的方法,從而控制顯示什麽樣的item(xml定義了布局,除了布局,還要設置具體的顯示內容,就在這個函數裏面設置)。

演示的效果是這樣的:
技術分享圖片

android開發(3):列表listview的實現 | 下拉刷新