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

weixin_34377065發表於2019-02-13

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是這樣的:


15769694-983ff80c9e18b410.jpg
使用PullToRefreshView的xml

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

(3)程式碼中使用下拉重新整理控制元件

在程式碼中,處理觸發重新整理的事件:


15769694-cb756a378110e539.jpg
使用pulltorefreshview的程式碼1

至此,介面就出現了一個能夠下拉重新整理的控制元件。但是,資料(包括重新整理出來的資料)最終要在ListView上顯示出來,所以,下一步就是使用ListView。

(4)使用ListView來顯示內容

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


15769694-e717918594d20c49.jpg
建立listview的cell的xml1

15769694-914282179f1b50e4.jpg
建立listview的cell的xml2

15769694-7a344e605ce55d4c.jpg
建立listview的cell的xml3

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

先定義一個內容類,這裡簡單演示,只設定一個圖片。定義的類是這樣的:


15769694-cdd6a39ad5a92bcd.jpg
listview介面卡使用的內容類

最終要使用這個內容類,生成一個list,再設定給listview的介面卡。

然後,寫listview的介面卡,由它提供繪製內容:


15769694-9494c23366e843d5.jpg
listview的介面卡

15769694-c58f10cfe128397b.jpg
listview的介面卡2

最後,使用listview:


15769694-7a7913a1aff38394.jpg
使用listview

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

演示的效果是這樣的:


15769694-85268216af36c433.png
演示效果圖

相關文章