package com.chad.baserecyclerviewadapterhelper;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.chad.baserecyclerviewadapterhelper.adapter.PullToRefreshAdapter;
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
import com.chad.baserecyclerviewadapterhelper.loadmore.CustomLoadMoreView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener;
/**
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
*/
public class PullToRefreshUseActivity extends BaseActivity implements BaseQuickAdapter.RequestLoadMoreListener, SwipeRefreshLayout.OnRefreshListener {
private RecyclerView mRecyclerView;
private PullToRefreshAdapter pullToRefreshAdapter;
private SwipeRefreshLayout mSwipeRefreshLayout;
private static final int TOTAL_COUNTER = 18;
private static final int PAGE_SIZE = 6;
private int delayMillis = 1000;
private int mCurrentCounter = 0;
private boolean isErr;
private boolean mLoadMoreEndGone = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecyclerView = (RecyclerView) findViewById(R.id.rv_list);
mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout);
mSwipeRefreshLayout.setOnRefreshListener(this);
mSwipeRefreshLayout.setColorSchemeColors(Color.rgb(47, 223, 189));
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
setTitle("Pull TO Refresh Use");
setBackBtn();
initAdapter();
addHeadView();
}
private void addHeadView() {
View headView = getLayoutInflater().inflate(R.layout.head_view, (ViewGroup) mRecyclerView.getParent(), false);
headView.findViewById(R.id.iv).setVisibility(View.GONE);
((TextView) headView.findViewById(R.id.tv)).setText("change load view");
headView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mLoadMoreEndGone = true;
pullToRefreshAdapter.setLoadMoreView(new CustomLoadMoreView());
mRecyclerView.setAdapter(pullToRefreshAdapter);
Toast.makeText(PullToRefreshUseActivity.this, "change complete", Toast.LENGTH_LONG).show();
}
});
pullToRefreshAdapter.addHeaderView(headView);
}
@Override
public void onLoadMoreRequested() {
mSwipeRefreshLayout.setEnabled(false);
if (pullToRefreshAdapter.getData().size() < PAGE_SIZE) {
pullToRefreshAdapter.loadMoreEnd(true);
} else {
if (mCurrentCounter >= TOTAL_COUNTER) {
// pullToRefreshAdapter.loadMoreEnd();//default visible
pullToRefreshAdapter.loadMoreEnd(mLoadMoreEndGone);//true is gone,false is visible
} else {
if (isErr) {
pullToRefreshAdapter.addData(DataServer.getSampleData(PAGE_SIZE));
mCurrentCounter = pullToRefreshAdapter.getData().size();
pullToRefreshAdapter.loadMoreComplete();
} else {
isErr = true;
Toast.makeText(PullToRefreshUseActivity.this, R.string.network_err, Toast.LENGTH_LONG).show();
pullToRefreshAdapter.loadMoreFail();
}
}
mSwipeRefreshLayout.setEnabled(true);
}
}
@Override
public void onRefresh() {
pullToRefreshAdapter.setEnableLoadMore(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
pullToRefreshAdapter.setNewData(DataServer.getSampleData(PAGE_SIZE));
isErr = false;
mCurrentCounter = PAGE_SIZE;
mSwipeRefreshLayout.setRefreshing(false);
pullToRefreshAdapter.setEnableLoadMore(true);
}
}, delayMillis);
}
private void initAdapter() {
pullToRefreshAdapter = new PullToRefreshAdapter();
pullToRefreshAdapter.setOnLoadMoreListener(this, mRecyclerView);
pullToRefreshAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_LEFT);
// pullToRefreshAdapter.setPreLoadNumber(3);
mRecyclerView.setAdapter(pullToRefreshAdapter);
mCurrentCounter = pullToRefreshAdapter.getData().size();
mRecyclerView.addOnItemTouchListener(new OnItemClickListener() {
@Override
public void onSimpleItemClick(final BaseQuickAdapter adapter, final View view, final int position) {
Toast.makeText(PullToRefreshUseActivity.this, Integer.toString(position), Toast.LENGTH_LONG).show();
}
});
}
}