PullToRefresh 下拉重新整理選單

2021-07-10 12:29:32 字數 3874 閱讀 7449

第一步:上圖

首先,我們需要將這個開源專案的匯入到我們的android studio專案中去。(如何匯入參照:位址)

一切準備就緒後:

我們先在主布局中加入pulltorefreshlistview(這裡主要使用pulltorefreshlistview作為例子,當然還有其他的)。

**如下:

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

xmlns:android=""

**xmlns:ptr=""

**android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/pull_to_refresh_listview"

android:layout_width="match_parent"

android:layout_height="match_parent"

ptr:ptranimationstyle = "rotate"

ptr:ptrdrawable ="@drawable/default_ptr_rotate"

ptr:ptrheaderbackground = "@android:color/transparent"

ptr:ptrheadertextcolor ="#530d4181"

/>

linearlayout>

通過上面的效果圖我們可以看到列表,沒錯,所以我們下一步要做的就是做為listview做乙個adapter。

一開始,我們需要建立乙個music類來為adapter做填充:

public

class music

public string getsinger()

public string gettitle()

public

void

settitle(string title)

public

void

setsinger(string singer)

}

然後需要乙個展示項布局

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

xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="new text"

android:id="@+id/list_item1"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="new text"

android:id="@+id/list_item2"

/>

linearlayout>

之後在mainactivity 中實現adapter

static class dataadapter extends baseadapter

@override

public

intgetcount()

@override

public object getitem(int position)

@override

public

long

getitemid(int position)

@override

public view getview(int position, view convertview, viewgroup parent)

vh = (viewholder)convertview.gettag();

music m = musics.get(position);

vh.tv_title.settext(m.gettitle());

vh.tv_singer.settext(m.getsinger());

return convertview;}}

static class viewholder

上述**是經典的listview入門級**,《第一行**》中有詳細介紹。

因為我們不是通過網路來獲取的資料,所以需要乙個方法來實現資料的獲取。

private

void loaddata ()

}

最後就是為listview 設定adapter了

loaddata();

lv = (pulltorefreshlistview) findviewbyid(r.id

.pull_to_refresh_listview);

dataadapter = new dataadapter(this, musics);

lv.setadapter(dataadapter);

注意需要將loaddata()放在前面。因為需要在顯示之前弄到資料。其實到這裡乙個簡單的下拉重新整理就完成了。

不過它並不是文章開頭所展示的那樣,可以看到它下拉重新整理時顯示重新整理的小並不會停留,而且它不能上拉重新整理。所以,這並不能滿足我們的需求。那我們繼續完善它。

首先,我們要實現下拉重新整理跟上拉重新整理兩個功能。這裡我們需要用到上拉與下拉時間***:

//setonrefreshlistener()方法可以同時用於上拉與下拉方法

//setonrefreshlistener()2方法需要分別實現上拉與下拉方法

lv.setonrefreshlistener(new pulltorefreshbase.onrefreshlistener()

});//設定上下都可以重新整理

lv.setmode(pulltorefreshbase.mode.both);

可以看到有setonrefreshlistener()、setonrefreshlistener()2兩個可以選擇。

他們的區別是:setonrefreshlistener()方法同時實現了上拉重新整理與下拉重新整理的功能。而setonrefreshlistener()2則是分別實現,即上拉重新整理與下拉重新整理實現**不同。上面用到的是第乙個。即上拉重新整理與下拉重新整理的**一樣。

接下來,我們想看到在下拉或上拉重新整理時表示重新整理的能停留片刻。我們這裡採用的是建立乙個非同步處理類。

static

class

loaddataasync

extends

asynctask

@override

protected string doinbackground(void... params) catch (interruptedexception e)

activity.loaddata();

return

"success";

}@override

protected

void onpostexecute(string s) }}

至此,我們文章開頭的功能也就全部完善了。

如何匯入PullToRefresh

修改library的build.gradle中的sdk版本 修改前 compilesdkversion 16 buildtoolsversion 27.0.3 defaultconfig 修改後 compilesdkversion 27 buildtoolsversion 27.0.3 defaul...

PullToRefresh動態設定重新整理的文字

pulltorefresh是android中使用最廣泛的下拉重新整理控制項!下面貼上與重新整理文案相關的 直接在 中就可以使用下面方法修改文案 pulltorefreshlistview.getloadinglayoutproxy true,true setloadingdrawable getac...

pulltorefresh滾動到底部

如果用listview,讓它滾動到頂部,一般是這樣寫的 if listview.isstackfrombottom listview.setstackfrombottom false 但是,使用pulltorefreshlistview以後,發現該物件竟然沒有setstackfrombottom 方...