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定義了佈局,除了佈局,還要設置具體的顯示內容,就在這個函數裏面設置)。
演示的效果是這樣的: