亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何實現下拉刷新及滑動到底部加載更多的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

南川市| 清水河县| 射洪县| 行唐县| 胶州市| 北票市| 阜南县| 兖州市| 姚安县| 阿坝县| 冕宁县| 遂溪县| 乌拉特前旗| 云安县| 定远县| 大关县| 齐河县| 那坡县| 邮箱| 玉田县| 百色市| 专栏| 武邑县| 石渠县| 青海省| 承德市| 宁安市| 高碑店市| 西青区| 武夷山市| 永吉县| 涟水县| 中阳县| 子长县| 锦屏县| 普宁市| 长垣县| 洪泽县| 黄龙县| 淳安县| 鹤庆县|