RecycleView实现瀑布流
来源:互联网 发布:国外网盘推荐 知乎 编辑:程序博客网 时间:2024/05/29 16:54
现在列表的布局较少用ListView,而大多数采用的是RecycleView,RecycleView可以有较多的变换,非常的灵活,也可以自定义设计你想要的动画或者是分割线,所以比较受欢迎吧。
RecycleView使用
1.Bind RecycleView
使用了butterknife来绑定,稍稍可以偷懒一点
@Bind(R.id.id_recycle)RecyclerView recyclerView;2.设置布局管理器
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));这里设置的是实现流式布局,设置的2列,方向是垂直的,实现瀑布流就是用流式布局
3.设置adapter
recyclerView.setAdapter(photoAdapter);4.设置分割线和动画
recyclerView.addItemDecoration( new DividerGridItemDecoration(this )); recyclerView.setItemAnimator( new DefaultItemAnimator());
其中主要难点在于adapter
自定义的adapter要继承RecycleView.Adapter,在adapter中要使ViewHolder继承自RecycleView.ViewHolder
在此之前定义了PhotoEntity实体类,里面有photo的各种信息(这个不重要),并且定义了一个photo.xml,这个是每个图片的布局,有imageView和textView
RecycleView.Adapter有三个方法:
onCreateViewHolder() : 这个类似于getView,返回的是ViewHolder,用来加载视图
onBindViewHolder() : 将数据等添加到ViewHolder
getItemCount() :获得列表的数量
public class PhotoAdapter extends RecyclerView.Adapter<PhotoAdapter.ViewHolder> { List<PhotoEntity> mList; //图片列表 Fragment mFragment; //图片点击加载的fragment public PhotoAdapter(List<PhotoEntity> mList,Fragment fragment){ this.mList = mList; this.mFragment = fragment; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //相当于getView,返回加载的视图 View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.photo,parent); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { //加载picasso PhotoEntity photo = mList.get(position); Picasso .with(mFragment.getContext()) .load(Uri.parse(photo.getUrl())) .centerCrop() .into(holder.iv_photo); String desc = photo.getDesc(); holder.tv_photo.setText(desc); } @Override public int getItemCount(){ return mList.size(); } public class ViewHolder extends RecyclerView.ViewHolder { @Bind(R.id.iv_photo) ImageView iv_photo; @Bind(R.id.tv_photo) TextView tv_photo; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } }}
在activity中把adapter与RecycleView绑定起来
photoAdapter = new PhotoAdapter(photo,this);recyclerView.setAdapter(photoAdapter);//实现瀑布流,两列recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));recyclerView.setItemAnimator(new DefaultItemAnimator());
这就实现了瀑布流的布局。我们可以通过SwipeRefreshLayout实现下拉刷新
过程如下:
1.Bind SwipeRefreshLayout
@Bind(R.id.swipe_refresh_layout)SwipeRefreshLayout swipeRefreshLayout;
2.设置下拉刷新的颜色
swipeRefreshLayout.setColorSchemeResources(R.color.refresh_process1, R.color.refresh_process2, R.color.refresh_process3);
3.加载,mIsFirstCreate开始设置为true,为第一次创建,自然先要加载
</pre><pre name="code" class="plain">swipeRefreshLayout.measure(View.MEASURED_SIZE_MASK, View.MEASURED_HEIGHT_STATE_SHIFT); if (mIsFirstCreated){ onRefresh(); }
4.执行刷新,loadMore是刷新的执行体
public void onRefresh() { swipeRefreshLayout.setRefreshing(true); mPresenter.loadMore(page); mIsFirstCreated = false; }
5.停止刷新
public void finishRefresh() { swipeRefreshLayout.setRefreshing(false); }
0 0
- RecycleView实现瀑布流
- Recycleview实现瀑布流
- recycleview实现瀑布流
- RecycleView 实现瀑布流效果
- RecycleView 实现瀑布流 添加分隔
- RecycleView实现瀑布流的效果
- RecycleView实现瀑布流添加分隔线
- recycleView 瀑布流
- Android RecycleView瀑布流
- RecycleView实现item错落且高度不同的瀑布流
- pulltorefresh 实现瀑布流的方式(基于recycleview)
- 瀑布流效果RecycleView+CardView
- 瀑布流 RecycleView 的 StaggeredGridLayoutManager?
- 使用recycleview实现瀑布流布局
- 简单粗暴实现RecycleView的瀑布流的粘性头部(非ItemDecoration实现)
- 简单粗暴实现RecycleView的瀑布流的粘性头部(非ItemDecoration实现)
- RecycleView的使用(包括瀑布流)
- RecycleView的瀑布流的使用
- Linux下cron定时执行Java程序
- eclipse 配置黑色主题
- JSP学习之jsp指令
- C++ 两个数的绝对值之和
- 创建博客-评论部分(提交和显示)
- RecycleView实现瀑布流
- 跟我一起学OC系列-开篇
- POJ 3185 The Water Bowls (高斯消元)
- Appium+Python环境的搭建(Windows)
- EventBus使用详解(一)——初步使用EventBus
- 错误[Error] ld returned 1 exit status
- sublime3 安装 anaconda 插件
- Codeforces-689C-Mike and Chocolate Thieves
- 路径中 斜杠/和反斜杠\ 的区别