KRecyclerView is a RecyclerView, dependent on Ultra-Pull-To-Refresh and HeaderAndFooterRecyclerView ,it's support:
- pull to refresh
- load more
- showEmptyView
- addHeaderView
it's support Grid and List(Refresh and LoadMore orientation is Vertical)
##Setup with Android Studio
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.kHRYSTAL:KRecyclerView:v0.1.0'
}
the library minSdkVersion is 13 and targetSdkVersion is 23
###Attribute
<me.khrystal.widget.KRecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:recyclerviewClipToPadding="true|false"
app:recyclerviewPadding="10dp"
app:recyclerviewPaddingBottom="10dp"
app:recyclerviewPaddingLeft="10dp"
app:recyclerviewPaddingRight="10dp"
app:recyclerviewPaddingTop="10dp"
app:recyclerviewEmptyView="@layout/empty_view">####init
krecyclerView = (KRecyclerView) view.findViewById(R.id.recyclerview);
//set your adapter like RecyclerView.Adapter<>
adapter = new SimpleAdapter(this,dataList);
//setAdapter
//Notice when column <= 1,KRecyclerView will use LinearLayoutManger
krecyclerView.setAdapter(adapter, column,LinearLayoutManager.VERTICAL);
krecyclerView.setLoadDataLintener(new KRecyclerView.LoadDataListener() {
@Override
public void loadData(int page) {
//load data method it's used by refresh and load more
}
});
//make KRecyclerView know how many items in a page
krecyclerView.setItemCount(10);
//make KRecyclerView know loaddata need to judge network can available
//Notice when isUseByNetWork(true) and network can't available
//the loading footer can click to load more again
krecyclerView.isUseByNetWork(true);you can watch Ultra-Pull-To-Refresh to know how to use
sample has a custom refresh header
//set classic refresh header
PtrClassicDefaultHeader defaultHeader =
new PtrClassicDefaultHeader(getActivity());
krecyclerView.mPtrFrameLayout.setHeaderView(defaultHeader);
krecyclerView.mPtrFrameLayout.addPtrUIHandler(defaultHeader);
//auto refresh once
krecyclerView.mPtrFrameLayout.postDelayed(new Runnable() {
@Override
public void run() {
krecyclerView.mPtrFrameLayout.autoRefresh(true);
}
}, 400);if you want to use SwipRefreshLayout you can use like
private void setCustomRefresh() {
krecyclerView.mPtrFrameLayout.setEnabled(false);
swipeRefreshLayout.setOnRefreshListener(this);
}
@Override
public void onRefresh() {
swipeRefreshLayout.setRefreshing(true);
//this method will set page=1 and called loadData(int page)
krecyclerView.setPageAndRefresh(1);
swipeRefreshLayout.setRefreshing(true);
}###show|hide EmptyView
krecyclerView.showEmptyView();
krecyclerView.hideEmptyView();###set KRecycerView reenable load more or cant load more
krecyclerView.enableLoadMore();
krecyclerView.cantLoadMore();###addheaderView
headerView = LayoutInflater.from(getContext()).inflate(R.layout.header_view,recyclerView,false);
recyclerView.addHeaderView(headerView);###more usage can watch sample
#Thanks @liaohuqiu @cundong


