您的位置:首页 > 其它

RecyclerView实现下拉刷新与自动加载控件封装

2017-02-16 16:18 519 查看
前端时间自己整合了一个listview实现的下拉刷新上拉自动加载的demo,有需要的看这里listview实现下拉刷新上拉自动加载,由于新版本APP采用到RecyclerView,发现找不到一个好的简单的效果,于是抽几天时间,结合大牛们的文章,整合出一个比较简洁的RecyclerView实现下拉刷新与自动加载控件

一.废话不多少看效果(本人比较笨,不会制作动态图,哈哈哈):

1.第一进入页面的效果图




2.数据为空的效果图



3.下拉刷新的效果



4.加载更多时效果



5.没有更多数据时的效果



二.代码放送

自定义一个控件MyRecycleView 继承linearlayout,将RecycleView和SwipeRefreshLayout添加
进去即可实现下拉刷新效果,对于自动加载布局,需要添加footview,可惜RecycleView
不是自带footview,那么就要自己通过itemType的不同来实现footview,这里需要通过
adapter实现,那么就需要自己定义一个LoadMoreWrapper,用于接收设置的adapter进行装饰

1.自定义一个通用的adapter


CommonAdapter.java

public abstract class CommonAdapter<T> extends RecyclerView.Adapter<ViewHolder>
{
protected Context mContext;
protected int mLayoutId;
protected List<T> mDatas;
protected LayoutInflater mInflater;
protected OnItemClickListener mOnItemClickListener;

public CommonAdapter(Context context, int layoutId, List<T> datas)
{
mContext = context;
mInflater = LayoutInflater.from(context);
mLayoutId = layoutId;
mDatas = datas;
}
protected boolean isEnabled(int viewType) {
return true;
}
@Override
public ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType)
{
ViewHolder viewHolder = ViewHolder.createViewHolder(mContext, parent, mLayoutId);
setListener(parent, viewHolder, viewType);
return viewHolder;
}
protected void setListener(final ViewGroup parent, final ViewHolder viewHolder, int viewType) {
if (!isEnabled(viewType)) return;
viewHolder.getConvertView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
int position = viewHolder.getAdapterPosition();
mOnItemClickListener.onItemClick(v, viewHolder , position);
}
}
});

viewHolder.getConvertView().setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (mOnItemClickListener != null) {
int position = viewHolder.getAdapterPosition();
return mOnItemClickListener.onItemLongClick(v, viewHolder, position);
}
return false;
}
});
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
convert(holder, mDatas.get(position),position);
}

protected abstract void convert(ViewHolder holder, T t,int position);

@Override
public int getItemCount()
{
return mDatas.size();
}

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
}

public interface OnItemClickListener {
void onItemClick(View view, RecyclerView.ViewHolder holder, int position);

boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position);
}
}

2.定义一个LoadMoreWrapper

LoadMoreWrapper.java
public class LoadMoreWrapper<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder>
{
public static final int ITEM_TYPE_LOAD_MORE = Integer.MAX_VALUE - 2;

private RecyclerView.Adapter mInnerAdapter;
private View mLoadMoreView;
private int mLoadMoreLayoutId;
private RelativeLayout mFooterView;
private View mNodataView;

public LoadMoreWrapper(RecyclerView.Adapter adapter)
{
mInnerAdapter = adapter;
}

private boolean hasLoadMore()
{
return
4000
mLoadMoreView != null || mLoadMoreLayoutId != 0;
}

private boolean isShowLoadMore(int position)
{
return hasLoadMore() && (position >= mInnerAdapter.getItemCount());
}

@Override
public int getItemViewType(int position)
{
if (isShowLoadMore(position))
{
return ITEM_TYPE_LOAD_MORE;
}
return mInnerAdapter.getItemViewType(position);
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
if (viewType == ITEM_TYPE_LOAD_MORE)
{
ViewHolder holder;
if (mLoadMoreView != null)
{
mFooterView = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.myrecycle_footview, parent,
false);

mNodataView=LayoutInflater.from(parent.getContext()).inflate(R.layout.myrecycle_nodata_view, parent,
false);
mFooterView.addView(mLoadMoreView);
mFooterView.addView(mNodataView);
mNodataView.setVisibility(View.GONE);
holder = ViewHolder.createViewHolder(parent.getContext(),mFooterView);
} else
{
mFooterView = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.myrecycle_footview, parent,
false);
mNodataView=LayoutInflater.from(parent.getContext()).inflate(R.layout.myrecycle_nodata_view, parent,
false);
mLoadMoreView=LayoutInflater.from(parent.getContext()).inflate(R.layout.default_loading, parent,
false);
mFooterView.addView(mLoadMoreView);
mFooterView.addView(mNodataView);
mNodataView.setVisibility(View.GONE);
holder = ViewHolder.createViewHolder(parent.getContext(),mFooterView);
}
return holder;
}
return mInnerAdapter.onCreateViewHolder(parent, viewType);
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
if (isShowLoadMore(position))
{
if (mOnLoadMoreListener != null)
{
mOnLoadMoreListener.onLoadMoreRequested();
}
return;
}
mInnerAdapter.onBindViewHolder(holder, position);
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView)
{
WrapperUtils.onAttachedToRecyclerView(mInnerAdapter, recyclerView, new WrapperUtils.SpanSizeCallback()
{
@Override
public int getSpanSize(GridLayoutManager layoutManager, GridLayoutManager.SpanSizeLookup oldLookup, int position)
{
if (isShowLoadMore(position))
{
return layoutManager.getSpanCount();
}
if (oldLookup != null)
{
return oldLookup.getSpanSize(position);
}
return 1;
}
});
}

@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder)
{
mInnerAdapter.onViewAttachedToWindow(holder);

if (isShowLoadMore(holder.getLayoutPosition()))
{
setFullSpan(holder);
}
}

private void setFullSpan(RecyclerView.ViewHolder holder)
{
ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

if (lp != null
&& lp instanceof StaggeredGridLayoutManager.LayoutParams)
{
StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;

p.setFullSpan(true);
}
}

@Override
public int getItemCount()
{
return mInnerAdapter.getItemCount() + (hasLoadMore() ? 1 : 0);
}

public interface OnLoadMoreListener
{
void onLoadMoreRequested();
}

private OnLoadMoreListener mOnLoadMoreListener;

public void setFootCanLoad(boolean footCanload) {
if(hasLoadMore()) {
if (footCanload) {//如果可以加载更多布局
mNodataView.setVisibility(View.GONE);
} else {
mNodataView.setVisibility(View.VISIBLE);
}
}
}
public LoadMoreWrapper setOnLoadMoreListener(OnLoadMoreListener loadMoreListener)
{
if (loadMoreListener != null)
{
mOnLoadMoreListener = loadMoreListener;
}
return this;
}

public LoadMoreWrapper setLoadMoreView(View loadMoreView)
{
mLoadMoreView = loadMoreView;
return this;
}

public LoadMoreWrapper setLoadMoreView(int layoutId)
{
mLoadMoreLayoutId = layoutId;
return this;
}

3.对recycleview 的封装

public class MyRecycleView<T> extends LinearLayout {
private static int VERTICAL = LinearLayout.VERTICAL;
private static int HORIZONTAL = LinearLayout.HORIZONTAL;

private RecyclerView recyclerView;
private SwipeRefreshLayout swipeRfl;
// private LinearLayoutManager layoutManager;
private SwipeRefreshLayout.OnRefreshListener mRefreshListener;
private CommonAdapter mAdapter;
private RefreshLoadMoreListener mRefreshLoadMoreListner;//下拉和加载更多监听
private ItemClickListener itemClickListener;//item点击监听
private LinearLayout mExceptView;
private LinearLayout mLoadingView;
private boolean hasMore = false;//是否还有更多数据加载
private boolean canMore = true;//是否可以加载更多
private boolean isCanRefresh = true;//是否可以刷新更多
private boolean isRefresh = false;//正在刷新
private boolean isLoadMore = false;//正在加载更多
private LoadMoreWrapper mLoadMoreWrapper;//为了实现加载更多footview

private static ImageView exceptIv;//异常图片控件
private static TextView exceptTv;//异常内容文本控件

private static ProgressBar loadingIv;//正在加载图片控件
private static TextView loadingTv;//正在加载文本控件

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

public MyRecycleView(Context context, AttributeSet attrs) {
super(context, attrs);
LinearLayout rootLl = new LinearLayout(context);
rootLl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mLoadingView = initLoadingView(context);
mLoadingView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mExceptView = initExceptionView(context);
mExceptView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
mExceptView.setVisibility(View.GONE);
swipeRfl = new SwipeRefreshLayout(context);
swipeRfl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
swipeRfl.setColorSchemeResources(android.R.color.holo_blue_light,
android.R.color.holo_red_light, android.R.color.holo_orange_light);
FrameLayout bootLl = new FrameLayout(context);
bootLl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
recyclerView = new RecyclerView(context);
recyclerView.setVerticalScrollBarEnabled(true);
recyclerView.setHorizontalScrollBarEnabled(true);
recyclerView.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
bootLl.addView(mLoadingView);
bootLl.addView(recyclerView);
bootLl.addView(mExceptView);
swipeRfl.addView(bootLl);
rootLl.addView(swipeRfl);
this.addView(rootLl);
/**
* 下拉至顶部刷新监听
*/
mRefreshListener = new SwipeRefreshLayout.OnRefreshListener() {

@Override
public void onRefresh() {
if (!isRefresh && !isLoadMore) {
isRefresh = true;
refresh();
}
}
};
swipeRfl.setOnRefreshListener(mRefreshListener);
recyclerView.setHasFixedSize(true);//不是瀑布流这个将可以优化性能
}

public MyRecycleView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

/**
* 错误提示界面初始化
*
* @param context
* @return
*/
private LinearLayout initExceptionView(Context context) {
LinearLayout rootLl = new LinearLayout(context);
rootLl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
rootLl.setOrientation(LinearLayout.VERTICAL);
rootLl.setGravity(Gravity.CENTER);
exceptIv = new ImageView(context);
exceptIv.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 点击图片刷新
if (!isRefresh) {
swipeRfl.setRefreshing(true);
isRefresh = true;
refresh();
}
}
});
//底部边距
LinearLayout.LayoutParams ll = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.setMargins(0, 0, 0, 32);
exceptIv.setLayoutParams(ll);
exceptTv = new TextView(context);
exceptTv.setLayoutParams(ll);
exceptTv.setTextSize(20.0f);
exceptTv.setTextColor(Color.DKGRAY);
//提示操作文本
TextView alertTv = new TextView(context);
alertTv.setLayoutParams(ll);
alertTv.setLayoutParams(ll);
alertTv.setTextSize(18.0f);
alertTv.setTextColor(Color.LTGRAY);
alertTv.setText("点击图片刷新");
rootLl.addView(exceptIv);
rootLl.addView(exceptTv);
rootLl.addView(alertTv);
return rootLl;
}

/**
* 初始化正在加载页面
*
* @param context
* @return
*/
private LinearLayout initLoadingView(Context context) {
LinearLayout rootLl = new LinearLayout(context);
rootLl.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT));
rootLl.setOrientation(LinearLayout.VERTICAL);
rootLl.setGravity(Gravity.CENTER);
loadingIv = new ProgressBar(context);
//底部边距
LinearLayout.LayoutParams ll = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.setMargins(0, 0, 0, 32);
loadingIv.setLayoutParams(ll);
loadingTv = new TextView(context);
loadingTv.setLayoutParams(ll);
loadingTv.setTextSize(20.0f);
loadingTv.setTextColor(Color.LTGRAY);

rootLl.addView(loadingIv);
rootLl.addView(loadingTv);
return rootLl;
}

/**
* drawableId 错误提示图片
* exceptStr 错误提示语
*/
public void customExceptView(int drawableId, String exceptStr) {
recyclerView.setVisibility(View.INVISIBLE);
mExceptView.setVisibility(View.VISIBLE);
mLoadingView.setVisibility(View.INVISIBLE);
exceptIv.setImageResource(drawableId);
exceptTv.setText(exceptStr);
swipeRfl.setEnabled(false);//出现错误之后,将设定无法下拉,运用点击图片进行刷新
}

/**
* drawableId 正在加载提示图片
* exceptStr 正在加载提示语
*/
public void customLoadView(String exceptStr) {
recyclerView.setVisibility(View.INVISIBLE);
mLoadingView.setVisibility(View.VISIBLE);
mExceptView.setVisibility(View.INVISIBLE);
loadingTv.setText(exceptStr);
swipeRfl.setEnabled(false);
}

public void scrollToTop() {
recyclerView.scrollToPosition(0);
}

public void setAdapter(CommonAdapter adapter) {
if (adapter != null) {
this.mAdapter = adapter;
if (canMore) {//是否可以加载更多
mLoadMoreWrapper = new LoadMoreWrapper(mAdapter);
mLoadMoreWrapper.setLoadMoreView(R.layout.default_loading);
mLoadMoreWrapper.setOnLoadMoreListener(new LoadMoreWrapper.OnLoadMoreListener() {
@Override
public void onLoadMoreRequested() {
/**
* 无论水平还是垂直
*/
if (hasMore && !isLoadMore && !isRefresh && canMore) {
isLoadMore = true;
loadMore();
}
}
});

recyclerView.setAdapter(mLoadMoreWrapper);
} else {
recyclerView.setAdapter(mAdapter);
}

mAdapter.setOnItemClickListener(new CommonAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, RecyclerView.ViewHolder holder, int position) {
if (itemClickListener != null)
itemClickListener.onClick(view, holder, position);
}

@Override
public boolean onItemLongClick(View view, RecyclerView.ViewHolder holder, int position) {
if (itemClickListener != null)
itemClickListener.onLongClick(view, holder, position);
return true;
}
});
}
}

public void setHasMore(boolean enable) {
this.hasMore = enable;
mLoadMoreWrapper.setFootCanLoad(hasMore);
}

public boolean isHasMore() {
return hasMore;
}

public boolean isCanMore() {
return canMore;
}

public void setCanMore(boolean canMore) {
this.canMore = canMore;
}

public void setPullRefreshEnable(boolean enable) {
isCanRefresh = enable;
swipeRfl.setEnabled(enable);
}

public boolean getPullRefreshEnable() {
return swipeRfl.isEnabled();
}

public void loadMore() {
if (mRefreshLoadMoreListner != null && hasMore && canMore) {
mRefreshLoadMoreListner.onLoadMore();
}
}

/**
* 加载更多完毕,为防止频繁网络请求,isLoadMore为false才可再次请求更多数据
*/
public void setLoadMoreCompleted() {
isLoadMore = false;
}

public void stopRefresh() {
isRefresh = false;
swipeRfl.setRefreshing(false);
if (isCanRefresh) swipeRfl.setEnabled(true);
}

public void setRefreshLoadMoreListener(RefreshLoadMoreListener listener) {
mRefreshLoadMoreListner = listener;
}

public void setOnItemClickListener(ItemClickListener listener) {
itemClickListener = listener;
}

/**
* 刷新动作,用于请求网络数据
*/
public void refresh() {
swipeRfl.setRefreshing(true);
//recyclerView.setVisibility(View.VISIBLE);
mExceptView.setVisibility(View.INVISIBLE);
if (mRefreshLoadMoreListner != null) {
mRefreshLoadMoreListner.onRefresh();
}
}

public void notifyDataSetChanged() {
//firstload布局只能出现一次,所以这里判断如果显示,就隐藏
if (mLoadingView.getVisibility() == View.VISIBLE) {
recyclerView.setVisibility(View.VISIBLE);
mExceptView.setVisibility(View.INVISIBLE);
mLoadingView.setVisibility(View.INVISIBLE);
}
if (mLoadMoreWrapper != null)
mLoadMoreWrapper.notifyDataSetChanged();
else
mAdapter.notifyDataSetChanged();
}

/**
* 第一次自动加载,不与无数据用同样布局是因为,这里要有动画效果,所以单独一个布局
*/
public void firstLoadingView(String exceptS
c836
tr) {
customLoadView(exceptStr);
isRefresh = true;
if (mRefreshLoadMoreListner != null) {
mRefreshLoadMoreListner.onRefresh();
}
}

/**
* 获取刷新数据以后的处理
*
* @param actAllList
* @param tmp
*/
public void setDateRefresh(ArrayList<T> actAllList, ArrayList<T> tmp) {
actAllList.clear();
stopRefresh();//如果刷新则停止刷新
if (tmp.isEmpty()) {
customExceptView(R.drawable.no_data, "这里空空如也");
setHasMore(false);
} else {
recyclerView.setVisibility(View.VISIBLE);
setHasMore(true);
actAllList.addAll(tmp);
}
notifyDataSetChanged();//刷新完毕
}

/**
* 获取加载更多数据的处理
*
* @param actAllList
* @param tmpLoadmore
*/
public void setDateLoadMore(ArrayList<T> actAllList, ArrayList<T> tmpLoadmore) {
if (tmpLoadmore.isEmpty()) {
setHasMore(false);//如果没有更多数据则设置不可加载更多
setLoadMoreCompleted();//加载完毕
stopRefresh();//如果刷新则停止刷新
return;
}
setHasMore(true);
actAllList.addAll(tmpLoadmore);
setLoadMoreCompleted();//加载完毕
notifyDataSetChanged();//加载更多完毕
stopRefresh();//如果刷新则停止刷新
}

public void setLayoutManager(RecyclerView.LayoutManager layoutManager) {
recyclerView.setLayoutManager(layoutManager);
}

/**
* 下拉刷新和自动加载监听
*/
public interface RefreshLoadMoreListener {
public void onRefresh();

public void onLoadMore();
}

public interface ItemClickListener {
public void onClick(View view, RecyclerView.ViewHolder holder, int position);

public void onLongClick(View view, RecyclerView.ViewHolder holder, int position);
}

}


6.具体用法

public class MainActivity extends BaseActivity implements
MyRecycleView.RefreshLoadMoreListener {

@Override
protected int getContentView() {
return R.layout.activity_main;
}
private MyRecycleView prrv;
private int page = 1;
private int num = 15;//测试数据的总数量
private final static int PAGESIZE = 10;
private CommonAdapter<ActivityBean> mAdapter;
/**
* 全部活动数据源
*/
private ArrayList<ActivityBean> actAllList = new ArrayList<ActivityBean>();
private boolean isFirstIn = true;//是否第一次加载

@Override
protected void afterView() {
setTitle("下拉刷新demo");
prrv = (MyRecycleView) findViewById(R.id.prrv);//绑定组合控件自定义的myrecycleview
initAdapter();//初始化适配器
prrv.setRefreshLoadMoreListener(this);//下拉上拉加载更多监听
//prrv.setPullRefreshEnable(false);//禁用刷新
//prrv.setCanMore(false);//禁用加载更多用在setAdapter()之前

//设置布局管理
//recyclerView.setLayoutManager();
//recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));
//LinearLayoutManager layoutManager = new LinearLayoutManager(this);
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL);
//GridLayoutManager layoutManager= new GridLayoutManager(this, 2);
prrv.setLayoutManager(layoutManager);
prrv.setAdapter(mAdapter);
//条目监听
prrv.setOnItemClickListener(new MyRecycleView.ItemClickListener() {
@Override
public void onClick(View view, RecyclerView.ViewHolder holder, int position) {
Toast.makeText(MainActivity.this, "click-pos = " + position, Toast.LENGTH_SHORT).show();
}

@Override
public void onLongClick(View view, RecyclerView.ViewHolder holder, int position) {
Toast.makeText(MainActivity.this, "longclick-pos = " + position, Toast.LENGTH_SHORT).show();
}
});

}

/**
* 初始化适配器
*/
private void initAdapter() {
mAdapter = new CommonAdapter<ActivityBean>(this, R.layout.fragment_discover_cardview_item, actAllList) {

@Override
protected void convert(ViewHolder holder, ActivityBean a, int position) {
holder.setText(R.id.activity_title, a.getActTitile());
/*holder.setText(R.id.activity_date, Utils.longtimeToDayDate(a
.getStartDate())
+ "-"
+ Utils.longtimeToDayDate(a.getEndDate()));*/
holder.setText(R.id.activity_date, a.getUrl());

}
};

}

/**
* 首次进入刷新
*/
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
// 第一次进入自动刷新
if (isFirstIn) {
prrv.firstLoadingView("数据加载中");
isFirstIn = false;
}

}

/**
* 加载分页数据
*/
public ArrayList<ActivityBean> loadNetDatas() {
ArrayList<ActivityBean> tmp = new ArrayList<ActivityBean>();
int m = num < PAGESIZE ? num : PAGESIZE;
for (int i = 0; i < m; i++) {
ActivityBean ab = new ActivityBean();
ab.setActId(i * 10 + "");
if (i % 3 == 0)
ab.setActTitile("下拉刷新自动加载");
else {
ab.setActTitile("下拉刷新自动加载的recyclviewActivity");
}
ab.setCollected(false);
ab.setCollectNum(i);
ab.setEndDate(1428881600);
ab.setImgUrl("");
ab.setStartDate(1428681600);
ab.setTop(false);
if (i % 2 == 0)
ab.setUrl("下拉刷新自动加载");
else {
ab.setUrl("下拉刷新自动加载的recyclviewActivity");
}

tmp.add(ab);
num--;
}
return tmp;
}

@Override
public void onRefresh() {
num = 13;
page = 1;
mHandler.sendEmptyMessageDelayed(0, 2000);
System.out.println("onRefresh");
}

@Override
public void onLoadMore() {
// TODO Auto-generated method stub
page++;
mHandler.sendEmptyMessageDelayed(1, 2000);
System.out.println("onLoadMore");
}

private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0://处理刷新的数据
ArrayList<ActivityBean> tmp = loadNetDatas();
prrv.setDateRefresh(actAllList, tmp);
ToastUtil.ToastCenter(MainActivity.this, "刷新完成");
break;
case 1:// 处理加载更多的数据
ArrayList<ActivityBean> tmpLoadmore = loadNetDatas();
prrv.setDateLoadMore(actAllList, tmpLoadmore);
break;
}
}
};

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_delete) {
actAllList.clear();
prrv.notifyDataSetChanged();
page = 1;
prrv.customExceptView(R.drawable.no_data, "这里空空如也");
return true;
}

if (id == R.id.action_refreshable) {
if (prrv.getPullRefreshEnable()) {
prrv.setPullRefreshEnable(!prrv.getPullRefreshEnable());
} else {
prrv.setPullRefreshEnable(!prrv.getPullRefreshEnable());
}
return true;
}
if (id == R.id.action_loadmoreable) {
if (prrv.isHasMore()) {
prrv.setHasMore(!prrv.isHasMore());
} else {
prrv.setHasMore(!prrv.isHasMore());
}
return true;
}
if (id == R.id.action_stoprefresh) {
prrv.stopRefresh();
return true;
}
if (id == R.id.action_scrollToTop) {
prrv.scrollToTop();
return true;
}
return super.onOptionsItemSelected(item);
}
}








三.demo下载地址

github

csdn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐