中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現下拉刷新及滑動到底部加載更多的ListView

發布時間:2021-12-04 13:44:39 來源:億速云 閱讀:212 作者:小新 欄目:移動開發

小編給大家分享一下如何實現下拉刷新及滑動到底部加載更多的ListView,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

本文主要介紹可同時實現下拉刷新及滑動到底部加載更多的ListView的使用。

該ListView優點包括:a. 可自定義下拉響應事件(如下拉刷新)  b.可自定義滾動到底部響應的事件(如滑動到底部加載更多)  c.可自定義豐富的樣式   d.高效(若下拉樣式關閉不會加載其布局,同listView效率一致) e. 豐富的設置。

本文可運行APK地址可見TrineaAndroidDemo.apk,可運行代碼地址可見DropDownListViewDemo@Google Code,效果圖如下:

如何實現下拉刷新及滑動到底部加載更多的ListView

1、引入公共庫

引入TrineaAndroidCommon@GoogleCode作為你項目的library,或是自己抽取其中的DropDownListView部分使用

2、在layout中定義

將布局中的ListView標簽換成cn.trinea.android.common.view.DropDownListView標簽

并加上自定義屬性的命名空間xmlns:listViewAttr="http://schemas.android.com/apk/res/cn.trinea.android.demo",其中cn.trinea.android.demo需要用自己的包名替換。如何自定義屬性及其命名空間可見本文***。xml代碼如下:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:listViewAttr="http://schemas.android.com/apk/res/cn.trinea.android.demo"     android:layout_width="match_parent"     android:layout_height="match_parent" >     <cn.trinea.android.common.view.DropDownListView         android:id="@+id/list_view"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:drawSelectorOnTop="false"         android:paddingBottom="@dimen/dp_40"         listViewAttr:isDropDownStyle="true"         listViewAttr:isOnBottomStyle="true"         listViewAttr:isAutoLoadOnBottom="true" /> </RelativeLayout>

DropDownListView自定義了三個boolean屬性

<declare-styleable name="drop_down_list_attr">     <attr name="isDropDownStyle" format="boolean" />     <attr name="isOnBottomStyle" format="boolean" />     <attr name="isAutoLoadOnBottom" format="boolean" /> </declare-styleable>

isDropDownStyle表示是否允許下拉樣式,java代碼中可自定義下拉listener,表示需要完成的任務

isOnBottomStyle表示是否允許底部樣式,java代碼中可自定義滾動到底部的listener,表示需要完成的任務

isAutoLoadOnBottom表示是否允許滾動到底部時自動執行對應listener,僅在isOnBottomStyle為true時有效

PS:如果isDropDownStyle或isOnBottomStyle為false,并不會加載對應的布局,所以性能同ListView一樣

3、在Java類中調用

通過setOnDropDownListener設置下拉的事件,不過需要在事件結束時手動調用onDropDownComplete恢復狀態

通過setOnBottomListener設置滾動到底部的事件,不過需要在事件結束時手動調用onBottomComplete恢復狀態,示例代碼如下:

/**  * DropDownListViewDemo  *   * @author Trinea 2013-6-1  */ public class DropDownListViewDemo extends BaseActivity {     private LinkedList<String>   listItems = null;     private DropDownListView     listView  = null;     private ArrayAdapter<String> adapter;     private String[]             mStrings  = { "Aaaaaa", "Bbbbbb", "Cccccc", "Dddddd", "Eeeeee",             "Ffffff", "Gggggg", "Hhhhhh", "Iiiiii", "Jjjjjj", "Kkkkkk", "Llllll", "Mmmmmm",             "Nnnnnn",                     };     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState, R.layout.drop_down_listview_demo);         listView = (DropDownListView)findViewById(R.id.list_view);         // set drop down listener         listView.setOnDropDownListener(new OnDropDownListener() {             @Override             public void onDropDown() {                 new GetDataTask(true).execute();             }         });         // set on bottom listener         listView.setOnBottomListener(new OnClickListener() {             @Override             public void onClick(View v) {                 new GetDataTask(false).execute();             }         });         listItems = new LinkedList<String>();         listItems.addAll(Arrays.asList(mStrings));         adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems);         listView.setAdapter(adapter);     }     private class GetDataTask extends AsyncTask<Void, Void, String[]> {         private boolean isDropDown;         public GetDataTask(boolean isDropDown){             this.isDropDown = isDropDown;         }         @Override         protected String[] doInBackground(Void... params) {             try {                 Thread.sleep(1000);             } catch (InterruptedException e) {                 ;             }             return mStrings;         }         @Override         protected void onPostExecute(String[] result) {             if (isDropDown) {                 listItems.addFirst("Added after drop down");                 adapter.notifyDataSetChanged();                  // should call onDropDownComplete function of DropDownListView at end of drop down complete.                 SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");                listView.onDropDownComplete(getString(R.string.update_at)                                             + dateFormat.format(new Date()));             } else {                 listItems.add("Added after on bottom");                 adapter.notifyDataSetChanged();                  // should call onBottomComplete function of DropDownListView at end of on bottom complete.                 listView.onBottomComplete();             }             super.onPostExecute(result);         }     } }

4、高級接口設置

5、樣式設置(自定義header和footer信息)

以上是“如何實現下拉刷新及滑動到底部加載更多的ListView”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲沃县| 贵港市| 临湘市| 炎陵县| 鹤庆县| 壤塘县| 绥化市| 阜城县| 芒康县| 德清县| 班玛县| 金溪县| 彝良县| 凤翔县| 澳门| 临汾市| 商河县| 孟村| 普洱| 无极县| 建阳市| 信宜市| 保山市| 兰州市| 山西省| 吴桥县| 西青区| 石泉县| 宣恩县| 双城市| 巴青县| 绥棱县| 大厂| 荣成市| 讷河市| 城市| 增城市| 广昌县| 曲水县| 永和县| 石首市|