第一步:上圖
首先,我們需要將這個開源專案的匯入到我們的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 方...