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找的
移到自己项目中要主要啊
不然怎么死都不知道