学习RecyclerView的一些东西
来源:互联网 发布:seo三人行 编辑:程序博客网 时间:2024/06/05 05:50
感觉5.0以后RecyclerView基本上能完成替代listView,gridview之类的了。
必须设置布局管理,以及RecyclerView.adapter才可以正常显示。
<span style="font-size:18px;">LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);mRecyclerView.setLayoutManager(linearLayoutManager);</span>
GridView网格类型布局:<span style="font-size:18px;">mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));</span>横向网格布局mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.HORIZONTAL));
可以设置增加item删除item的动画效果// 设置动画效果mRecyclerView.setItemAnimator(new DefaultItemAnimator());自己自定义实现ItemAnimator效果更好
需要注意:使用RecyclerView的item之间没有分割线,需要实现ItemDecoration
// 设置分割线DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST);mRecyclerView.addItemDecoration(dividerItemDecoration);或者直接在Item的布局上使用margin来用背景色充当分割线。
Adapter继承RecyclerView.adapter
public class SimpleAdapter extends RecyclerView.Adapter<MyViewHolder> { private Context mContext; private LayoutInflater mInflater; private List<String> mDataList; public SimpleAdapter(Context context, List<String> list) { mContext = context; mDataList = list; mInflater = LayoutInflater.from(context); } public void addData(int position) { mDataList.add("insert"); notifyItemInserted(position); } public void deleteData(int position) { mDataList.remove(position); notifyItemRemoved(position); } @Override public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = mInflater.inflate(R.layout.item_view, viewGroup, false); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder myViewHolder, int i) { myViewHolder.text.setText(mDataList.get(i)); } @Override public int getItemCount() { return mDataList.size(); }}class MyViewHolder extends RecyclerView.ViewHolder { public TextView text; public MyViewHolder(View itemView) { super(itemView); text = (TextView) itemView.findViewById(R.id.textview); }}注意要使用ViewHolder。使用onBindViewHolder方法来绑定数据。
OnCreateViewHolder方法来创建生成布局。
实现瀑布流时使用:
// 设置布局管理 StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(staggeredGridLayoutManager);需要使item的高度相互之间有差值。
注意RecyclerView不支持item的点击事件,需要自己在adapter里设置点击监听事件。
若在activity里实现监听事件时,由于动态增加的item的没有使用notifyChanged()来刷新整个布局,会导致从监听中穿过来得position有误,使用getChildPosition()会更好。
0 0
- 学习RecyclerView的一些东西
- 学习python要下载的一些东西。
- 关于java学习的一些东西
- 看腾讯页面学习的一些东西
- Android学习---关于布局的一些东西
- Java学习二:一些零碎的东西
- hadoop学习之前的一些东西
- 值得程序员去学习的一些东西
- recyclerview的一些用法
- caoz的一些东西
- Gtk2的一些东西
- javascript的一些东西
- 整理的一些东西
- 一些肤浅的东西
- 一些琐碎的东西
- 一些琐碎的东西
- 一些基本的东西
- NFS的一些东西
- poj 3259 Wormholes (BELLman—FOrd算法)(邻接矩阵表示)
- leetcode--ConvertSortedArraytoBinarySearchTree
- 天气预报---网络加载最新天气信息,截取JSON文件
- Hopcroft-Carp算法模板【二分图匹配】
- shiro权限项目中的简单应用
- 学习RecyclerView的一些东西
- Untiy Shader - 纹理贴图滚动
- 从输入网址到显示网页的全过程分析
- python网络编程学习笔记(9):数据库客户端
- leetcode--ConstructBinaryTreefromInorderandPostorderTraversal
- 自己实现内存拷贝函数memcpy
- 显示调用基类构造函数,迟绑定,VC++编译链接过程
- MyBatis记录
- MySql数据库 sql查询增加序号的伪列