Recyclerview在API 21上刷新以在android中刷新

时间:2017-09-30 08:34:54

标签: android android-recyclerview refresh swipe

我想"向上滑动以刷新内容"回收站视图中的功能(类似于SwipeRefreshLayout)。

目前我有一个按钮,可以在点击时刷新视图,我想使用向上滑动来执行相同的操作。唯一的问题是自API 22以来SwipeRefreshLayout可用。

使用API​​ 21时是否可以完成?

3 个答案:

答案 0 :(得分:1)

使用android.support.v4.widget.SwipeRefreshLayout。 添加build.gradle compile 'com.android.support:support-v4:x.x.x' 其中x.x.x是支持库的最后一个版本。

答案 1 :(得分:0)

您可以使用支持库v4中的类android.support.v4.widget.SwipeRefreshLayout

添加build.gradle依赖项:

compile 'com.android.support:support-core-ui:26.1.0'

您可以在官方文档中找到all details

答案 2 :(得分:0)

您可以使用android.support.v4.widget.SwipeRefreshLayout。虽然我发现支持版本存在问题,但我必须像这样修改SwipeRefreshLayout

import android.app.Activity;
import android.content.Context;
import android.support.design.widget.AppBarLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;

public class CustomSwipeRefreshLayout extends SwipeRefreshLayout implements AppBarLayout.OnOffsetChangedListener {
    private AppBarLayout appBarLayout;

    public CustomSwipeRefreshLayout(Context context) {
        super(context);
    }

    public CustomSwipeRefreshLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        if (getContext() instanceof Activity) {
            appBarLayout = (AppBarLayout) ((Activity) getContext()).findViewById(R.id.appbar);
            if (appBarLayout != null)
                appBarLayout.addOnOffsetChangedListener(this);
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        if (appBarLayout != null) {
            appBarLayout.removeOnOffsetChangedListener(this);
            appBarLayout = null;
        }
        super.onDetachedFromWindow();
    }

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
        this.setEnabled(i == 0);
    }
}

现在实现这样的自定义SwipeRefreshLayout

<?xml version="1.0" encoding="utf-8"?>
<your.package.name.CustomView.CustomSwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swipe_refresh_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white">


    <!-- Your RecyclerView -->

</your.package.name.CustomView.CustomSwipeRefreshLayout>