SwipeToLoadLayout

SwipeToLoadLayout

https://github.com/Aspsine/SwipeToLoadLayout

这个组件 比较简介

下面分析下 源码 以及使用

1 使用

在github中有demo

ListView - TwitterListViewFragment

xml配置

<com.aspsine.swipetoloadlayout.SwipeToLoadLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/swipeToLoadLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/style_window_background"
    app:swipe_style="classic"
    tools:context="com.aspsine.swipetoloadlayout.demo.fragment.TwitterListViewFragment">

    <include
        android:id="@id/swipe_refresh_header"
        layout="@layout/layout_twitter_header" />

    <ListView
        android:id="@id/swipe_target"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:divider="@null" />

    <include
        android:id="@id/swipe_load_more_footer"
        layout="@layout/layout_classic_footer" />
</com.aspsine.swipetoloadlayout.SwipeToLoadLayout>

设置 尽然 在xml 添加 header footer 在SwipeToLoadLayout

和某一个很像

这是配置listView 切换最后一个自动刷新 可以不配置

listView.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                    if (view.getLastVisiblePosition() == view.getCount() - 1 && !ViewCompat.canScrollVertically(view, 1)) {
                        swipeToLoadLayout.setLoadingMore(true);
                    }
                }
            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

            }
        });
        swipeToLoadLayout.setOnRefreshListener(this);
        swipeToLoadLayout.setOnLoadMoreListener(this);

刷新

 @Override
    public void onRefresh() {
        GsonRequest request = new GsonRequest<SectionCharacters>(Constants.API.CHARACTERS, SectionCharacters.class, new Response.Listener<SectionCharacters>() {
            @Override
            public void onResponse(SectionCharacters characters) {
                mAdapter.setList(characters.getSections());
                if (viewPager.getAdapter() == null) {
                    mPagerAdapter = new LoopViewPagerAdapter(viewPager, indicators);
                    viewPager.setAdapter(mPagerAdapter);
                    viewPager.addOnPageChangeListener(mPagerAdapter);
                    mPagerAdapter.setList(characters.getCharacters());
                    viewPager.setBackgroundDrawable(getResources().getDrawable(R.mipmap.bg_viewpager));
                } else {
                    mPagerAdapter = (LoopViewPagerAdapter) viewPager.getAdapter();
                    mPagerAdapter.setList(characters.getCharacters());
                }
                swipeToLoadLayout.setRefreshing(false);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                swipeToLoadLayout.setRefreshing(false);
                volleyError.printStackTrace();
            }
        });
        App.getRequestQueue().add(request).setTag(TAG);
    }

关键 swipeToLoadLayout.setRefreshing(false);

加载更多

 @Override
    public void onLoadMore() {
        swipeToLoadLayout.postDelayed(new Runnable() {
            @Override
            public void run() {
                swipeToLoadLayout.setLoadingMore(false);
            }
        }, 1000);
    }

关键 swipeToLoadLayout.setLoadingMore(false);

ListView header footer 配置

Header 继承SwipeRefreshHeaderLayout

public class TwitterRefreshHeaderView extends SwipeRefreshHeaderLayout {}

出现相关事件

    @Override
    public void onRefresh() {
    }

    @Override
    public void onPrepare() {
    }

    @Override
    public void onMove(int y, boolean isComplete, boolean automatic) {
    }

    @Override
    public void onRelease() {

    }

    @Override
    public void onComplete() {

    }

    @Override
    public void onReset() {
    }

源码分析

Listerener

刷新 Listerener

public interface OnRefreshListener {
    public void onRefresh();
}

更多

public interface OnLoadMoreListener {
    public void onLoadMore();
}

MoreFooter - SwipeLoadMoreFooterLayout

核心代码SwipeToLoadLayout

感觉还是很不错的 简单实用

SwipeToLoadLayout

这个里面是通过id找的

移到自己项目中要主要啊

不然怎么死都不知道

results matching ""

    No results matching ""