Android ExpandableListView實現(xiàn)下拉刷新和加載更多效果
支持下拉刷新和加載更多的ExpandableListView,供大家參考,具體內容如下
模擬器有點卡,滑動的時候鼠標不方便
怎么用:
XML中聲明
<com.xingyi.elonggradletaskdemo.widget.SExpandableListView android:listSelector="@android:color/transparent" android:id="@+id/elv_coupon" android:layout_width="match_parent" android:layout_height="match_parent" android:dividerHeight="1dp"> </com.xingyi.elonggradletaskdemo.widget.SExpandableListView>
UI中配置下拉刷新的回調以及是否支持下拉和加載更多
expandableListView = (SExpandableListView) findViewById(R.id.elv_coupon); // 在設置適配器之前設置是否支持下拉刷新 expandableListView.setLoadingMoreEnabled(true); expandableListView.setPullRefreshEnabled(true); expandableListView.setAdapter(couponAdapter);
設置下拉刷新和加載跟多的回調接口
expandableListView.setmLoadingListener(new SExpandableListView.LoadingListener() { @Override public void onLoadMore() { // 模擬加載更多 isPull = false; // 這里應該在項目中請求,這里用延時模擬接口請求 loadCount++; Message msg = handler.obtainMessage(); msg.arg1 = loadCount; handler.sendMessageDelayed(msg, 2000); Log.e("TAG---HANDLER:", loadCount + "-->"); } @Override public void onRefresh() { isPull = true; loadCount++; // 模擬接口請求下拉刷新 Message msg = handler.obtainMessage(); msg.arg1 = loadCount; handler.sendMessageDelayed(msg, 2000); Log.e("TAG---HANDLER:", loadCount + "-->"); } }); private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); // 模擬接口回復數(shù)據(jù),加入下拉刷新次數(shù)為6次的話我們就認為沒有更多了 if (loadCount > 6) { expandableListView.refreshComplete(); expandableListView.setNoMore(true); } else { addLoadMoreData(); if (isPull) { expandableListView.refreshComplete(); } couponAdapter.notifyDataSetChanged(); // 是不是全部展開,根據(jù)需求設置 // expanedAll(); } Log.e("TAG---收到消息:", loadCount + "-->"); } };
簡單看下實現(xiàn)過程
- 自定義ExpandableListview
- 重寫onTouch事件
- 給自定義的view添加滑動監(jiān)聽事件
- 初始化的時候給View添加header 和 footer 用來下拉刷新
// 這里在自定view構造函數(shù)中調用的增加header和footer的代碼,注意下兩種添加方式的區(qū)別,詳情見注釋和源代碼 private void initSE(Context context) { /** * 這里是footer的填充,注意指定他的父親為當前的listview, * 這里footer不用指定layoutparem是因為footer 在填充的時候已經指定了他的父view */ loadMoreView = LayoutInflater.from(context).inflate(R.layout.item_footer_view, this, false); loadMorePb = (ProgressBar) loadMoreView.findViewById(R.id.pb_loading); loadMoreDesc = (TextView) loadMoreView.findViewById(R.id.tv_loadmore_desc); } @Override public void setAdapter(ExpandableListAdapter adapter) { if (pullRefreshEnabled) { mRefreshHeader = new ArrowRefreshHeader(getContext()); mRefreshHeader.setProgressStyle(ProgressStyle.LineScale); /** * 注意一定要指定header的layoutparasm為 AbsListView,以為 header是 new出來的他默認的 layoutparm是當前header的類型, * 如果我們不修改的話會報錯 類型轉化異常, */ mRefreshHeader.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT)); addHeaderView(mRefreshHeader); } if (loadingMoreEnabled) { addFooterView(loadMoreView); } super.setAdapter(adapter); }
源代碼下載地址:ElongGradleTaskDemo
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android ExpandableListView雙層嵌套實現(xiàn)三級樹形菜單
- Android ExpandableListView單選以及多選實現(xiàn)代碼
- Android ScrollView嵌套ExpandableListView顯示不正常的問題的解決辦法
- Android listview ExpandableListView實現(xiàn)多選,單選,全選,edittext實現(xiàn)批量輸入的實例代碼
- Android 關于ExpandableListView刷新問題的解決方法
- Android 關于ExpandableListView去掉里頭分割線的方法
- Android UI控件ExpandableListView基本用法詳解
- Android改變ExpandableListView的indicator圖標實現(xiàn)方法
- Android中ExpandableListView的用法實例
- Android ExpandableListView展開列表控件使用實例
- Android ExpandableListView用法示例詳解
相關文章
Android中 TeaScreenPopupWindow多類型篩選彈框功能的實例代碼
這篇文章主要介紹了Android TeaScreenPopupWindow多類型篩選彈框功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-06-06Android開發(fā)之超實用的系統(tǒng)管理工具類【SD卡,網絡,uri,屏幕,網絡,軟鍵盤,文本,進程等】
這篇文章主要介紹了Android開發(fā)之超實用的系統(tǒng)管理工具類,涉及Android針對SD卡,網絡,uri,屏幕,網絡,軟鍵盤,文本,進程等相關操作技巧,需要的朋友可以參考下2018-02-02解析Android中View轉換為Bitmap及getDrawingCache=null的解決方法
在android中經常會遇到View轉換為Bitmap的情形,本篇文章主要介紹了Android中View轉換為Bitmap及getDrawingCache=null的解決方法,有需要的可以了解一下。2016-11-11Flutter WillPopScope攔截返回事件原理示例詳解
這篇文章主要為大家介紹了Flutter WillPopScope攔截返回事件原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09Android監(jiān)聽ScrollView滑動距離的簡單處理
這篇文章主要為大家詳細介紹了Android監(jiān)聽ScrollView滑動距離的簡單處理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02