91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

岳西县| 巩义市| 囊谦县| 铜鼓县| 湘乡市| 崇州市| 固始县| 陈巴尔虎旗| 宁城县| 泾源县| 湘乡市| 定边县| 峡江县| 长顺县| 永和县| 琼海市| 板桥市| 兴城市| 桃江县| 万山特区| 库伦旗| 额尔古纳市| 罗甸县| 富蕴县| 瑞昌市| 广东省| 邹城市| 千阳县| 丘北县| 富顺县| 六安市| 连南| 郁南县| 利津县| 正镶白旗| 荃湾区| 郸城县| 胶州市| 新乐市| 枝江市| 延庆县|