1. 程式人生 > >自定義下拉重新整理上拉載入控制元件(SwipeRefreshLayout + recyclerView)

自定義下拉重新整理上拉載入控制元件(SwipeRefreshLayout + recyclerView)

感覺還可以的star下謝謝!

效果圖:(效果圖迴圈播放後,總感覺有些詭異!, 可能是gif截的點不對, 在手機上看效果正常的)

swipeRecyclerView.gif

我就不講程式碼是如何實現的了。說下實現了什麼內容:

  1. 支援自動下拉重新整理
//設定自動下拉重新整理,切記要在recyclerView.setOnLoadListener()之後呼叫
     // 因為在沒有設定監聽介面的情況下,setRefreshing(true),呼叫不到OnLoadListener
      mSwipeRecyclerView.setRefreshing(true);
  1. 支援emptyView
mSwipeRecyclerView.setEmptyView
(View emptyView);

3.支援禁止上拉載入更多/下拉重新整理

 //禁止下拉重新整理
    mSwipeRecyclerView.setRefreshEnable(false);

    //禁止載入更多
    mSwipeRecyclerView.setLoadMoreEnable(false);

4.支援自定義footer view

   //設定footerView
   //但是自定義的footerView必須繼承BaseFooterView
   mSwipeRecyclerView.setFooterView(new SimpleFooterView(this));

5.支援GridLayoutManager的SpanSizeLookup

//由於SwipeRecyclerView中對GridLayoutManager的SpanSizeLookup做了處理,因此對於使用了
    //GridLayoutManager又要使用SpanSizeLookup的情況,可以這樣使用!
    mSwipeRecyclerView.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            return
3; } });

6.關於footerView的分割線 獲取childCount - 1 不包含footerView即可

//設定去除footerView 的分割線
    mSwipeRecyclerView.getRecyclerView().addItemDecoration(new RecyclerView.ItemDecoration() {
        @Override
        public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
            super.onDraw(c, parent, state);
            Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
            paint.setColor(0xFFEECCCC);

            Rect rect = new Rect();
            int left = parent.getPaddingLeft();
            int right = parent.getWidth() - parent.getPaddingRight();
            final int childCount = parent.getChildCount() - 1;
            for (int i = 0; i < childCount; i++) {
                final View child = parent.getChildAt(i);

                //獲得child的佈局資訊
                final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
                final int top = child.getBottom() + params.bottomMargin;
                final int itemDividerHeight = 1;//px
                rect.set(left + 50, top, right - 50, top + itemDividerHeight);
                c.drawRect(rect, paint);
            }
        }
    });

7.如果需要對SwipeRefreshLayout或RecyclerView做其他的設定

       mSwipeRecyclerView.getSwipeRefreshLayout()
       mSwipeRecyclerView.getRecyclerView()

8.可能存在的問題

由於Recycler.Adapter中關於資料集更新的方法全是final的,無法重寫,並且自定義的DataObserver也沒法實現的方法 如:notifyItemMoved方法 因此使用除SwipeRecyclerView中DataObserver的方法之外的更新資料集的方法,可能會有問題所以更新資料集建議採用DataObserver中有的方法。

感覺還可以的star下謝謝!

201609272123578195.gif

你不點個贊嗎?

相關推薦

定義重新整理載入控制元件SwipeRefreshLayout + recyclerView

感覺還可以的star下謝謝! 效果圖:(效果圖迴圈播放後,總感覺有些詭異!, 可能是gif截的點不對, 在手機上看效果正常的) 我就不講程式碼是如何實現的了。說下實現了什麼內容: 支援自動下拉重新整理 //設定自動下拉重新整理,切記要

RecyclerView實現重新整理與自動載入控制元件封裝

CommonAdapter.java public abstract class CommonAdapter<T> extends RecyclerView.Adapter<ViewHolder> { protected Context mContext; prot

react native定義實現重新整理載入

1·定義元件 PageListView.js  /** * 上拉重新整理/下拉載入更多 元件 */ import React, { Component } from 'react'; import { Text, View, ListView, FlatList

Banner+定義View+SmartRefreshLayout重新整理載入更多

仿美團開源專案整體架構和首頁其實早就完成了,前段時間家裡各種事情搞得心力交瘁,停更了一段時間。甚至一度動搖繼續這個專案的決心,因為最近在學前端,在技術的深度和廣度之間一直糾結搖擺不定。一個聲音是繼續完成這個專案,把安卓玩的更深入一些;另一個聲音是趕緊學前端吧

定義ListView重新整理載入更多功能

本篇的自定義listview包含下拉重新整理和上拉載入更多都是自定義。如果你想把重新整理的圖片做的更炫只需要更換下圖片加上適當的動畫就OK咯!由於沒有合適的圖片就用了個粗糙的。不好看請見諒。 //部分程式碼(都做了註釋): /** * @author: ZQF_

IOS控制元件系列二---優雅的UITableView的MVC模式設計,支援定義重新整理/載入更多檢視(含swift)

demo效果如下: 本小框架設計原則依舊按照之前的慣例: 1.擴充套件性好,程式碼不冗餘(整個重新整理的頭部與底部程式碼不超過300行)。 2.邏輯清晰。 3.回撥介面清晰。 4.移植性好。 對於擴充套件性本框架擴充套件點如下: 1.框架中的

Android定義控制元件實戰——實現仿IOS重新整理載入 PullToRefreshLayout

         下拉重新整理控制元件,網上有很多版本,有自定義Layout佈局的,也有封裝控制元件的,各種實現方式的都有。但是很少有人告訴你具體如何實現的,今天我們就來一步步實現自己封裝的 PullToRefreshLayout 完美的解決下拉重新整理,上拉載入問題。  

完全定義RecyclerView重新整理載入

自從谷歌推出SwipeRefreshLayout之後越來越多的部落格都是使用SwipeRefreshLayout來完成下拉重新整理,但是往往產品經理根本不會使用谷歌的樣式.每個公司都有一套自己的下拉樣式這個時候就需要我們完全自定義RecyclerView的下拉重新整理,基本

react-native-page-listview使用方法(定義FlatList/ListView重新整理,載入更多,方便的實現分頁)

react-native-page-listview 對ListView/FlatList的封裝,可以很方便的分頁載入網路資料,還支援自定義下拉重新整理View和上拉載入更多的View.相容高版本FlatList和低版本ListVIew.元件會根據你使用的re

Android控制元件----關於重新整理載入定義控制元件

首先需要明白的是,平常用的ListView做不到類似於小說章節閱讀的瀏覽效果,去實現重新整理載入的功能。雖然GitHub上有一些開源庫可以使用,但是這種東西自己如果有時間能夠親歷一遍瞭解的更加透徹,畢竟在很多Android的APP中都有這方面的功能。話不多說,下

mui 重新整理 載入

轉自http://ask.dcloud.net.cn/question/1247 動態禁止和恢復上下拉重新整理 留著做個demo 需要暫時禁止和恢復上下拉重新整理,我的初始化程式碼如下: mui.init({ styles: { top: ‘42px’, //子頁面頂部位置

android重新整理,載入更多

public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerview; private ArrayList<Integer> mList = new ArrayL

Android打造 ListView GridView等 通用的重新整理 自動載入元件

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

vue-scroller的使用 實現重新整理 載入初始效果

安裝vue-scroller npm i vue-scroller -D 在main.js中: import VueScroller from 'vue-scroller' Vue.use(VueScroller) &nbs

重新整理載入框架:android-Ultra-Pull-To-Refresh

下拉重新整理上拉載入框架:PtrClassicFrameLayout 1、一個優雅的框架實現下拉重新整理上拉載入,學習來源:點選開啟連結 2、如何使用: 2.1、在專案中引入: compile 'com.shizhefei:MVCHelper-UltraRefresh:1

好用的重新整理 載入 框架 SmartRefreshLayout

特點功能:  簡單用例 1.在 build.gradle 中新增依賴 支援多點觸控 支援淘寶二樓和二級重新整理 支援巢狀多層的檢視結構 Layout (LinearLayout,FrameLayout...) 支援所有的 View(AbsListView

Refresh+LoadMore重新整理 載入更多

匯入有關的library庫 XListViewFlush import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import

MUI重新整理載入實現

DOM結構 <div id="refreshContainer" class="mui-content mui-scroll-wrapper"> <div class="hui-media-list mui-scroll"> <u

Flutter之封裝一個重新整理載入的listview

封裝一個簡單的listview,下拉重新整理上拉載入 Getting Started 1.需求場景 在開發的過程中,經常要用到一個具有下拉重新整理和上拉載入更多功能的listview ,程式碼的實現思路基本是差不多的。所以有必要封裝一個通用的listview,方便使用。 2.需要用到

Android中ListView重新整理載入更多效果實現

  在Android開發中,下拉重新整理和上拉載入更多在很多app中都會有用到,下面就是具體的實現的方法。 首先,我們自定義一個RefreshListView來繼承與ListView,下面是程式碼: package com.example.downrefresh; import