2020-03-14 ListView分頁加載的實現(xiàn)

應(yīng)用場景復(fù)現(xiàn)乐纸,文字描述:用戶手動向上滑動屏幕,一直滑動到底端庶喜,繼續(xù)向上滑動救鲤,會出現(xiàn)加載字樣和一個圓圈加載動態(tài)圖標(biāo),加載片刻后本缠,頁面底端增加了展示數(shù)據(jù)斥扛,加載字樣和圓圈消失了

分析:數(shù)據(jù)展示是從上到下一條一條的展示的,有很多條丹锹,向上滑動稀颁,底端會出現(xiàn)很多條新的數(shù)據(jù),所以是列表形式展示數(shù)據(jù)的楣黍,實現(xiàn)列表展示數(shù)據(jù)的控件有很多匾灶,今天我們用最常見和普通的listView控件來實現(xiàn)數(shù)據(jù)的列表展示,首先你會發(fā)現(xiàn)租漂,使用listView展示的列表數(shù)據(jù)最底端沒有出現(xiàn)加載字樣和圓圈秃踩,這太神奇了消别,是不是霉颠?不著急怀读,我們加上不就有了嗎,既然系統(tǒng)自帶的listView控件沒有底端的字樣和圓圈,那我們就不能使用系統(tǒng)默認的listView實現(xiàn)這一功能了,那我們需要自定義一個底端有加載字樣和圓圈的listView了,自定義控件開始了,首先柱宦,新建一個我們自己的listView名字就叫MyListView忧侧,繼承自ListView,默認實現(xiàn)如下的幾個構(gòu)造函數(shù):

public class MyListView extends ListView {

public MyListView(Context context) {

super(context);

}

public MyListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

}

繼承了ListView熄捍,就有ListView的列表數(shù)據(jù)展示功能苹熏,缺失的是加載字樣和圓圈,我們需要在ListView的基本功能上添加這一功能,首先需要寫好布局,布局如下:

布局代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

? ? android:layout_width="match_parent"

? ? android:layout_height="match_parent"

? ? android:orientation="horizontal">

<LinearLayout

? ? ? ? android:id="@+id/load_layout"

? ? ? ? android:layout_width="match_parent"

? ? ? ? android:layout_height="match_parent"

? ? ? ? android:gravity="center">

<ProgressBar

? ? ? ? ? ? style="?android:attr/progressBarStyleSmall"

? ? ? ? ? ? android:layout_width="wrap_content"

? ? ? ? ? ? android:layout_height="wrap_content"

? ? ? ? ? ? android:layout_marginRight="20dp" />

<TextView

? ? ? ? ? ? android:layout_width="wrap_content"

? ? ? ? ? ? android:layout_height="wrap_content"

? ? ? ? ? ? android:text="正在加載..."

? ? ? ? ? ? android:textSize="20sp" />


</LinearLayout>

</LinearLayout>

布局實現(xiàn)展示:

布局寫出來了,那么接下來的事便是將布局添加到自定義的ListView中,如何添加,代碼如下:

public class MyListView extends ListView {//implements AbsListView.OnScrollListener

//? ? public ILoadListener iLoadListener;

//? ? public int lastItem, totalItemCount;

//? ? Boolean isLoading=false;

? ? Viewfooter;

? ? public MyListView(Context context) {

super(context);

? ? ? ? initView(context);

? ? }

public MyListView(Context context, AttributeSet attrs) {

super(context, attrs);

? ? ? ? initView(context);

? ? }

public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

? ? ? ? initView(context);

? ? }

private void initView(Context context) {

footer = LayoutInflater.from(context).inflate(R.layout.layout_footer, null);

//? ? ? ? footer.findViewById(R.id.load_layout).setVisibility(View.GONE);//隱藏底布局

//? ? ? ? //注意塘淑,這句代碼的意思是給自定義的ListView加上底布局

? ? ? ? this.addFooterView(footer);

? ? ? // this.setOnScrollListener(this);

? ? }

}

放在運行的Activity對應(yīng)的布局文件中:


運行看下效果:

效果場景展現(xiàn),文字描述兼吓,滑動到屏幕底端凶朗,出現(xiàn)了加載字樣和圓圈


結(jié)合實際用戶使用的場景宛畦,滑動屏幕底端踏施,應(yīng)該是沒有出現(xiàn)加載字樣和圓圈的,用戶在屏幕底端繼續(xù)向上滑才出現(xiàn)字樣和圓圈,所以默認在底端的時候艳馒,這一布局是隱藏掉的斋日,打開這句代碼贡必,就可以隱藏了:??

? footer.findViewById(R.id.load_layout).setVisibility(View.GONE);//隱藏底布局

下面我們應(yīng)該繼續(xù)實現(xiàn)的是在屏幕最底端科侈,當(dāng)用戶繼續(xù)向上滑動出現(xiàn)的場景权薯,場景是會出現(xiàn)字樣和圓圈刁俭,加載片刻后娩贷,字樣和圓圈消失了甜熔,但是屏幕最底端往上看诵闭,發(fā)現(xiàn)增加了一些新的數(shù)據(jù)展示模狭,那么這一過程如何實現(xiàn),首先我們需要監(jiān)聽用戶滑動屏幕到了最底端晰绎,然后繼續(xù)滑動了构资,代碼如下,實現(xiàn)監(jiān)聽這一功能:

1句携、實現(xiàn)這個接口和接口下的這兩個方法:



實現(xiàn)接口下的兩個方法拨齐,可以實現(xiàn)我們的需求享怀,重寫代碼如下:



關(guān)鍵點在于實現(xiàn)上圖中框住的代碼:

iLoadListener對象是接口對象反番,onLoad()是接口下的方法罢缸,下面是定義接口,和實現(xiàn)接口回調(diào)投队,代碼如下:

1枫疆、定義一個接口:


2、接口的目的是用來回調(diào)實現(xiàn)這句代碼的:

iLoadListener.onLoad();//加載更多數(shù)據(jù)

3敷鸦、接口的實現(xiàn)息楔,在你運行自定義ListView的activity中愿险,實現(xiàn)接口,和接口下的onLoad方法惦费,該方法主要需要實現(xiàn)功能(1)瞧省、加載數(shù)據(jù)(2)构拳、刷新在自定義listview的數(shù)據(jù)展示(3)、隱藏有加載字樣和圓圈的布局footer



4暖混、下面來實現(xiàn)接口的回調(diào),整個過程是:在自定義listview控件MyListView下定義接口ILoadListener和方法onLoad圆存,在使用自定義listview的activity下實現(xiàn)接口ILoadListener和方法onLoad,需要將實現(xiàn)后的接口對象回調(diào)給自定義listview控件MyListView中,那么我們可以在MyListView中設(shè)置一個回調(diào)函數(shù)碌宴,主要接收ILoadListener的接口對象杀狡,設(shè)置為全局變量,實現(xiàn)最終的這句代碼贰镣,iLoadListener.onLoad();//加載更多數(shù)據(jù):

在運行的activity中呜象,

那么,整個接口的申明碑隆,實現(xiàn)恭陡,回調(diào)就完成了,好了思路完畢上煤,onLoad方法里面的代碼就沒貼出來休玩,自己去實現(xiàn),最終運行效果:

默認展現(xiàn)五條數(shù)據(jù)


向上滑動劫狠,出現(xiàn)加載字樣和圓圈:

加載片刻拴疤,加載字樣和圓圈消失,出現(xiàn)新的數(shù)據(jù):


重復(fù)向上滑動操作独泞,又加載了新的四條數(shù)據(jù):

好了 呐矾,效果已實現(xiàn),listview分頁加載實現(xiàn)完畢懦砂!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凫佛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子孕惜,更是在濱河造成了極大的恐慌愧薛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衫画,死亡現(xiàn)場離奇詭異毫炉,居然都是意外死亡,警方通過查閱死者的電腦和手機削罩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門瞄勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來费奸,“玉大人,你說我怎么就攤上這事进陡≡覆” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵趾疚,是天一觀的道長缨历。 經(jīng)常有香客問我,道長糙麦,這世上最難降的妖魔是什么辛孵? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮赡磅,結(jié)果婚禮上魄缚,老公的妹妹穿的比我還像新娘。我一直安慰自己焚廊,他們只是感情好冶匹,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咆瘟,像睡著了一般嚼隘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搞疗,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天嗓蘑,我揣著相機與錄音须肆,去河邊找鬼匿乃。 笑死,一個胖子當(dāng)著我的面吹牛豌汇,可吹牛的內(nèi)容都是我干的幢炸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拒贱,長吁一口氣:“原來是場噩夢啊……” “哼宛徊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逻澳,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闸天,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后斜做,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苞氮,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年瓤逼,在試婚紗的時候發(fā)現(xiàn)自己被綠了笼吟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片库物。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贷帮,靈堂內(nèi)的尸體忽然破棺而出戚揭,到底是詐尸還是另有隱情,我是刑警寧澤撵枢,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布民晒,位于F島的核電站,受9級特大地震影響诲侮,放射性物質(zhì)發(fā)生泄漏镀虐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一沟绪、第九天 我趴在偏房一處隱蔽的房頂上張望刮便。 院中可真熱鬧,春花似錦绽慈、人聲如沸恨旱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搜贤。三九已至,卻和暖如春钝凶,著一層夾襖步出監(jiān)牢的瞬間仪芒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工耕陷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掂名,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓哟沫,卻偏偏與公主長得像饺蔑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嗜诀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容