1. 程式人生 > >RecyclerView的上拉重新整理與下拉載入

RecyclerView的上拉重新整理與下拉載入

1.佈局(用SwipeRefreshLayout實現下拉重新整理)

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipeRefreshLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout>

2.RecyclerView的itemView佈局

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight
="10dp" android:layout_marginTop="10dp">
<ImageView android:id="@+id/item_img" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="fitXY" android:src="@mipmap/panda" />
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/item_img" android:layout_margin="1dp" android:background="#8c282828" android:orientation="horizontal"> <TextView android:id="@+id/item_tv" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="10dp" android:layout_weight="1" android:text="大熊貓" android:textColor="#ffffff" android:textSize="15sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:text="國寶" android:textColor="#de3636" android:textSize="15sp" /> </LinearLayout> </RelativeLayout>

這裡寫圖片描述

4.下拉重新整理要藉助SwipeRefreshLayout

// 下拉重新整理(SwipeRefreshLayou設定重新整理的監聽)
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        // 下拉重新整理,清空資料來源,重新獲取最新資料

    }
});

注意:重新整理完畢要關閉重新整理動畫

// 資料已經更新,關閉重新整理動畫
// 如果不關閉會一直轉圈
if (refreshLayout.isRefreshing()) {
    refreshLayout.setRefreshing(false);
}

這裡寫圖片描述

5.上拉載入需要新增OnScrollListener監聽事件

// 上拉載入需要新增滾動監聽事件
// 這裡實現LinearLayoutManager並且是VERTAL方向的監聽
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        // 滿足條件 執行上拉載入資料
        if (newState == RecyclerView.SCROLL_STATE_IDLE && isBottom) {
        // 填充下一頁資料...           
        // 注意:載入完 要置為false
        isBottom = false;
    }
}

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        // dy>0 代表向下滾動
        super.onScrolled(recyclerView, dx, dy);
        int lastVisibleItemPosition = manager.findLastVisibleItemPosition();
        int itemCount = manager.getItemCount();
        // 如果最後一個可見的View的position 等於 itemCount-1 代表滾動到底部
        isBottom = itemCount-1 == lastVisibleItemPosition && itemCount>0;
    }
});

這裡寫圖片描述 這裡寫圖片描述

程式碼

相關推薦

RecyclerView重新整理載入

1.佈局(用SwipeRefreshLayout實現下拉重新整理) <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeRefreshLayout"

RecyclerView重新整理載入

Activity介面方法 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mai

Android中recyclerview+pullToRefresh實現重新整理載入

一. 依賴 implementation 'com.jwenfeng.pulltorefresh:library:1.0.3' 要把minSdkVersion 改為16以上 二.佈局 <LinearLayout xmlns:android="http:/

(再次更新)打造RecyclerView萬能介面卡,重新整理載入

入行幾個月了,一直想自己封裝一些類,剛好遇到了這個問題,現在跟大家分享。 注意點 1 泛型擦除 2 需要防止型別轉換異常 github地址:https://github.com/zw21544182/MyBaseDemo (裡面還有部分FileUtil

用vue-scroller做重新整理載入的模板(簡單明瞭,通用)

1.首先下外掛,並在你的vue專案中引人 npm i vue-scroller -D import VueScroller from 'vue-scroller 2.Vue.use(VueScroller )(這一步別忘啦) 3.在你需要做上拉重新整理,下拉載入的地方加上<scroll

OC 建立TableView基類並結合MJRefresh實現重新整理載入

1.建立繼承自UITableView的基類BaseTableView: #import <UIKit/UIKit.h> @class BaseTableView; @protocol BaseTableViewDelegate <NSObject> @option

微信小程式重新整理載入2種方法實現

微信小程式上拉重新整理和下拉載入2種方法實現,onPullDownRefresh,scroll-view使用 一、XXX.json開啟下拉重新整理 {    "enablePullDownRefresh": true }   二、XXX.js onP

輪播圖、pulltofresh重新整理載入

@輪播圖、pulltofresh上拉重新整理,下拉載入TOC import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.Vi

分頁, 重新整理載入

一、自定義listview package com.fragment.home; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; impor

mint-ui 重新整理載入

export default { data() { return { list: [], allLoaded: true, bottomStatus: "", wrapperHeight: 0, topStatus: "",

小程式筆記 -- 重新整理觸底載入一頁

下拉與觸底函式是每一個頁面都有事件函式, 同頁面生命週期函式類似 : 監聽並執行 onPullDownRefresh 判斷使用者在最頂部下拉時觸發 如果下拉後再拉回去, 不觸發  onReachBottom 判斷使用者到達最底部時觸發 如果當面頁面的內容, 不夠多時,

React Native 一個小專案其中一些主要功能實現 (頂部導航欄(可滑動),網路解析,重新整理載入

//網路解析 import React, { Component } from "react"; import { View, Text, TouchableOpacity } from "react-native"; import RefreshListView, { Re

prlibrary重新整理載入

import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListVi

【微信小程式】重新整理載入

上拉重新整理和下拉載入有兩種方式可以實現: 1.使用scroll-view元件進行操作,使用自帶的scrolltoupper和scrolltolower事件可以實現。適合頁面區域性的上拉下拉。 附上

React-native 三方框架實現重新整理載入網路請求以及跳轉先詳情頁面

首先 第一步 需要匯入三方的類庫 和跳轉詳情頁面 yarn add react-native-refresh-list-view //導包 import RefreshListView, { RefreshState } from “react-nati

多條目載入 +重新整理載入

//*Afragment->XListView 重新整理 載入 public class AFragment extends Fragment implements XListView.IXListViewListener { private String

Xrecycleview重新整理載入

implementation 'com.jcodecraeer:xrecyclerview:1.3.2' Android studio3.0之後需要結局版本衝突 configurations.all { resolutionStrategy.eachDependency

mui做的重新整理載入和日期選擇器

var pageCount = 1;//頁碼 var date_inputs = document.getElementsByClassName('select_date'); var today = new Date(); var thisyear = today.getF

Swiper實現重新整理載入更多(學習筆記④)

簡單粗暴的放碼 一個簡單的效果 分頁器效果中加下拉重新整理和上拉載入功能 HTML結構: <div class="a">標題</div> <div class="tab"> <a class="active" href="j

mint ui 重新整理載入問題

1.最外層包一層div,一定要有高度。2.mt-loadmore ,該外掛會預設自動載入一次,在頁面首次載入的時候。3.在載入成功後,並且是最後一頁時,要把allLoaded 設定為false;如果不是最後一頁,要設為true。大致程式碼如下:<div class="m