国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - 分享Android中pullToRefresh的使用心得

分享Android中pullToRefresh的使用心得

2021-04-23 15:01石小峰 Android

這篇文章主要介紹了分享Android中pullToRefresh的使用心得的相關資料,需要的朋友可以參考下

pulltorefresh的導入

 

首先,點擊new按鈕 -> import module

 分享Android中pullToRefresh的使用心得

然后在 new module界面選擇已經在本地的含有源代碼的pulltorefresh。

分享Android中pullToRefresh的使用心得

打開如下圖所示的open module settings 按鈕

 分享Android中pullToRefresh的使用心得

點擊app中的dependencies 中右邊框的"+"按鈕,選擇第三個 ,如下所示

 分享Android中pullToRefresh的使用心得

分享Android中pullToRefresh的使用心得

選擇modules : pulltorefreshlibrary ,點擊ok

 然后在build.gradle(module:app)或者你自己要寫的那個android 程序的根文件夾的build.gradle中加入下面一句話

 compile project(':pulltorefreshlibrary')

自此,pulltorefresh已經導入成功,可以新建一個pulltorefrenshlistview驗證一下。

pulltorefreshlistview的基本使用

pulltorefreshlistview和listview的使用基本差的不多,只不過listview的xml要換成

com.handmark.pulltorefresh.library.pulltorefreshlistview

 例子如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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="vertical">
  <com.handmark.pulltorefresh.library.pulltorefreshlistview
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id="@+id/refresh_list_view"
    ptr:ptrdrawable="@drawable/default_ptr_flip"
    ptr:ptranimationstyle="flip"
    ptr:ptrheaderbackground="#383838"
    ptr:ptrheadertextcolor="#ffffff" >
  </com.handmark.pulltorefresh.library.pulltorefreshlistview>
</linearlayout>

上面的例子中pulltorefreshlistview中多了幾個屬性 分別以ptr開頭,這是指定pulltorefreshlistview在刷新的時候出現的特效,比如第一個是指定刷新時顯示的圖片,第二個是指定刷新的圖片以何種方式顯示出來,第三個是指定刷新時頭部的背景,第四個是指定刷新時頭部字體的顏色。

以上這些都可以在代碼中設置。

listview中每個item的xml還是不變的,adapter的使用和寫法也是不變的,需要改變的只有設定刷新事件。

接下來在代碼中設定pulltorefreshlistview的一些基本屬性和事件。

步驟一 綁定控件,設置屬性

綁定控件代碼如下:

?
1
2
private pulltorefreshlistview listview;
listview = (pulltorefreshlistview) findviewbyid(r.id.refresh_list_view);

設置刷新時顯示的刷新狀態

?
1
2
3
4
5
6
7
8
9
10
11
12
//對pulltolistview綁定adapter
listview.setadapter(adapter);
 /*設置pulltorefreshlistview的刷新模式,both代表支持上拉和下拉,pull_from_end代表上拉,pull_from_start代表下拉 */
listview.setmode(pulltorefreshbase.mode.both);
initrefreshlistview();
initrefreshlistview方法設置刷新顯示的狀態
 public void initrefreshlistview() {
  iloadinglayout labels = listview.getloadinglayoutproxy(true, true);
  labels.setpulllabel("快點拉");
  labels.setrefreshinglabel("正在拉");
  labels.setreleaselabel("放開刷新");
}

這里通過getloadinglayoutproxy 方法來指定上拉和下拉時顯示的狀態的區別,第一個true 代表下來狀態 ,第二個true 代表上拉的狀態 。如果想區分上拉和下拉狀態的不同,可以分別設置getloadinglayoutproxy ,例子如下:

?
1
2
3
4
5
6
7
8
9
10
11
public void initrefreshlistview(){ 
 iloadinglayout startlabels = pulltorefresh 
       .getloadinglayoutproxy(true, false); 
 startlabels.setpulllabel("下拉刷新"); 
 startlabels.setrefreshinglabel("正在拉"); 
 startlabels.setreleaselabel("放開刷新"); 
 iloadinglayout endlabels = pulltorefresh.getloadinglayoutproxy( 
       false, true); 
 endlabels.setpulllabel("上拉刷新"); 
 endlabels.setrefreshinglabel("正在載入...");
 endlabels.setreleaselabel("放開刷新...");

這樣pulltorefreshlistview刷新時狀態就設定好了。

步驟二 pulltorefreshlistview監聽事件的設置

這里主要設置setonrefreshlistener 事件,根據剛才設置的不同的刷新模式,在里面寫的匿名內部類也不一樣。

 規則如下:

 如果mode設置成mode.both,需要設置刷新listener為onrefreshlistener2,并實現onpulldowntorefresh()、onpulluptorefresh()兩個方法。 

如果mode設置成mode.pull_from_start或mode.pull_from_end,需要設置刷新listener為onrefreshlistener,同時實現onrefresh()方法。

當然也可以設置為onrefreshlistener2,但是mode.pull_from_start的時候只調用onpulldowntorefresh()方法,mode.pull_from_end的時候只調用onpulluptorefresh()方法.

這樣在進入該activity時候,手動上拉和下拉就會實現刷新和加載。

 如果想剛進入activity的時候就執行加載,則要調用如下方法

 listview.setrefreshing();

接下來只需要在onpulldowntorefresh和onpulluptorefresh 編寫要獲取listview新數據的方法。

 我這里的例子如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
listview.setonrefreshlistener(new pulltorefreshbase.onrefreshlistener2<listview>() {
   @override
   public void onpulldowntorefresh(pulltorefreshbase<listview> refreshview) {
      adapter.addtotop();
      new finishrefresh().execute();
}
   @override
   public void onpulluptorefresh(pulltorefreshbase<listview> refreshview) {
      adapter.addtobottom();
      new finishrefresh().execute();
}
});

我這里在自定義的adapter中寫了2個新方法 addtotop 和addtobottom 分別在頭部加入數據和在尾部加入數據
 方法如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void addtotop() {
  for (int i = 0; i < 2; i++) {
     item item = new item();
     item.settext("在頭部加入第" + i + "數據");
     item.setimageid(r.mipmap.ic_launcher);
     listitems.add(i, item);
  }
}
private void addtobottom() {
  for (int i = 0; i < 2; i++) {
     item item = new item();
     item.settext("在尾部加入第" + i + "數據");
     item.setimageid(r.mipmap.ic_launcher);
     listitems.add(item);
   }
}

這里并沒有考慮去重的問題,就是每次刷新結束后會顯示出刷新的結果,當再次刷新后,又會執行和上次一樣的結果,實際上,這是不符合邏輯的,當第二次在刷新的時候應該進行判斷,如果數據一樣就不把數據加入到list當中。

接下來 new finishrefresh().execute(); 是這里我比較疑惑的一個固定寫法,在這個com.handmark.pulltorefresh.library.pulltorefreshlistview 框架下,執行onrefreshcomplete();方法必須在異步下執行,不能和主進程一起執行,如果直接在下拉,上拉監聽方法中寫入onrefreshcomplete(); 則在實際刷新中刷新狀態的顯示header是不會收回去的,換句話說 刷新一直不會完成。

所以要在繼承asynctask的類下調用onrefreshcomplete();

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private class finishrefresh extends asynctask<void, void, void> {
   @override
   protected void doinbackground(void... params) {
     try {
       thread.sleep(1000);
     } catch (interruptedexception e) {
 
     }
     return null;
   }
 
   @override
   protected void onpostexecute(void avoid) {
     listview.onrefreshcomplete();
     adapter.notifydatasetchanged();
   }
 }

至此,pulltorefreshlistview就實現了簡單的上拉,下拉使用

步驟三 pulltorefreslistview 的其他監聽方法

關于步驟三今天時間有限,先給大家分享到這里,后續持續更新。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 免费在线观看一区二区 | 国产v日产∨综合v精品视频 | 在线观看中文字幕 | 操操操av | 在线一级黄色片 | 狠狠干天天爱 | 秋霞成人 | av电影免费在线观看 | 午夜伦理影院 | 一区二区三区国产 | 一二三精品区 | 国产福利91精品一区二区 | 一区在线视频 | 国产精品成人一区二区三区夜夜夜 | 午夜精品成人一区二区 | 天天插天天操 | 国产精品日本欧美一区二区三区 | 国产精品香蕉 | 中文字幕永久第一页 | 中文字幕日韩一区 | av黄色在线看 | 中文字幕在线电影 | 国产精品久久久久久婷婷天堂 | 一级片在线播放 | 亚洲国产中文字幕 | 伊人久久在线 | 亚洲一二三| www精品美女久久久tv | 国产一区二区资源 | 综州合另类 | 精品国产一区二区三区久久久蜜 | 日本精品一区二 | 久久精品国产一区二区三区 | 91免费版在线观看 | 日本一区二区不卡在线观看 | 狠狠爱综合 | 国产999精品久久久久久 | 寡妇性视频免费高清播放器 | 成人片网址 | 人人射人人舔 | 狠狠操狠狠操 |