RecycleView是个什么东西,大家应该都知道,即是support-v7里面的一个控件,他完全可以替代ListVIew和GridView,和他们的区别呢?
主要是RecycleView更加的灵活,通过设置它提供的不同LayoutManager(布局管理器),ItemDecoration(间隔) , ItemAnimator(增减动画),遗憾是点击事件什么的得自己完成,不过这个也不复杂,不是什么大问题。
在没有RecycleView时,实现瀑布流是非常麻烦的一件事情,有了RecycleView就可以很好的实现了
再加上拉加载和SwipeRefreshLayout实现刷新就可以完成一个适用于单列表,网格,瀑布流都可以显示的控件
代码:
//recycerview
LoadMoreRecyclerView mRecyclerView = (LoadMoreRecyclerView) view.findViewById(R.id.ad_recyclerview_picture);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setOnPauseListenerParams(ImageLoader.getInstance(), false, true);
mRecyclerView.setAutoLoadMoreEnable(true);
//设置为瀑布流
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
//设置适配器
ArrayList<Map<String, Object>> items = Collections.synchronizedList(new ArrayList<Map<String, Object>>());
AdapterInAdPicture myadapter = new AdapterInAdPicture(context, items);//自定义的adapter继承RecyclerView.Adapter
mRecyclerView.setAdapter(myadapter);
mRecyclerView.setLoadMoreListener(new LoadMoreRecyclerView.LoadMoreListener() {
@Override
public void onLoadMore() {
//加载的部分
load(true);
}
});
//刷新
SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.ad_refresh_layout);
mSwipeRefreshLayout.setColorSchemeResources(R.color.ad_background_yellow);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//刷新的部分
items.clear();
myadapter.notifyDataSetChanged();
page_dynamic = 1;
dynamicIsEmpty = false;
load(false);
}
});
效果: