Android 新控件RecyclerView
来源:互联网 发布:java做的图书管理系统 编辑:程序博客网 时间:2024/05/21 17:14
RecyclerView 是 android-support-v7-21 版本中新增的一个 Widgets。我们可以使用RecyclerView非常简单的实现横向竖向的ListView.GridView.以及瀑布流的效果.先看一下项目的实现的效果
是不是很炫?使用RecyclerView可以非常简单的实现.
RecyclerView 特性
1.不关心Item是否显示在正确的位置以及如何显示
2.不关心item之间如何分割
3.不关注Item增加与删除的动画效果
4.它仅仅只是关注如何回收和复用item
贴出部分代码:
mRecyclerView = (RecyclerView) findViewById(R.id.rv); //设置它的Adapter myRecyclerViewListAdapater = new MyRecyclerViewListAdapater(this,sourceDatas); mRecyclerView.setAdapter(myRecyclerViewListAdapater); //设置它的LayoutManage , 通过 LayoutManager去设置它的显示方式 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); mRecyclerView.setLayoutManager(linearLayoutManager); //设置分割线// dividerItemDecoration = new DividerItemDecoration(this,LinearLayoutManager.VERTICAL);// mRecyclerView.addItemDecoration(dividerItemDecoration); //设置增加删除Item的动画 mRecyclerView.setItemAnimator(new DefaultItemAnimator()); myRecyclerViewListAdapater.setOnItemClickListener(new MyRecyclerViewListAdapater.OnItemClickListener() { @Override public void onItemClickListener(View view, int position) { Toast.makeText(MainActivity.this,"click : " + position,Toast.LENGTH_SHORT).show(); } @Override public boolean onLongItemClickListener(View view, int position) { myRecyclerViewListAdapater.deleteItem(position); return false; } });
Adapter代码
public class MyRecyclerViewListAdapater extends RecyclerView.Adapter<MyRecyclerViewListAdapater.MyListHolder> { private Context context; protected List<String> sourceDatas; private LayoutInflater layoutInflater; public OnItemClickListener mOnItemClickListener; public MyRecyclerViewListAdapater(Context context,List<String> sourceDatas){ this.context = context; this.sourceDatas = sourceDatas; layoutInflater = LayoutInflater.from(context); } @Override public MyRecyclerViewListAdapater.MyListHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = layoutInflater.inflate(R.layout.item,viewGroup,false); MyListHolder myListHolder = new MyListHolder(view); return myListHolder; } @Override public void onBindViewHolder(final MyListHolder viewHolder, final int i) { viewHolder.textView.setText(sourceDatas.get(i)); itemClick(viewHolder); } /** * ItemView点击事件 */ protected void itemClick(final MyListHolder viewHolder){ viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(null != mOnItemClickListener){ int postion = viewHolder.getLayoutPosition(); mOnItemClickListener.onItemClickListener(viewHolder.itemView,postion); } } }); viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { if(null != mOnItemClickListener){ int position = viewHolder.getLayoutPosition(); return mOnItemClickListener.onLongItemClickListener(viewHolder.itemView,position); } return false; } }); } /** * 方法返回item的数量 * */ @Override public int getItemCount() { return sourceDatas.size(); } /** * 添加item */ public void addItem(int position){ sourceDatas.add(position,"Add Item"); notifyItemInserted(position); } /** * 删除Item */ public void deleteItem(int positon){ sourceDatas.remove(positon); notifyItemRemoved(positon); } /** * 设置item点击接口 */ public void setOnItemClickListener(OnItemClickListener onItemClickListener){ this.mOnItemClickListener = onItemClickListener; } /** * Recycler本身并没有给我们提供ItemClick事件,这里需要我们自己实现这个接口 * 点击接口 * */ public interface OnItemClickListener{ //点击事件 public void onItemClickListener(View view,int position); //长按事件 public boolean onLongItemClickListener(View view,int position); } class MyListHolder extends RecyclerView.ViewHolder{ TextView textView; //继承 RecyclerView.ViewHolder 必须要实现它的构造方法 //可以看到在它的构造方法接收到一个View的参数,这个View就是我们创建的ItemView public MyListHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.tv_list_item); } }}
布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" /></FrameLayout>
源码地址:http://download.csdn.net/detail/u011068996/8858869
0 0
- Android 新控件RecyclerView
- Android新控件RecyclerView剖析
- 新控件 RecyclerView 用法
- android L新控件RecyclerView详解与DeMo
- android L新控件RecyclerView详解与DeMo
- Android5.0新控件RecyclerView
- android 控件 recyclerview
- Android控件—RecyclerView
- Android控件--RecyclerView
- 安卓5.0新控件-----RecyclerView
- Android5.0新控件RecyclerView使用
- Android新控件RecyclerView浅析及上拉和下拉刷新
- Android新控件RecyclerView浅析及上拉和下拉刷新
- Android 5.x(一) 新控件之RecyclerView,CardView,Palette的使用
- Android L 新增控件:RecyclerView
- Android(滑动控件RecyclerView)
- android 5.0新特性 RecyclerView使用初级
- Android新特性-RecyclerView之基础篇
- Atomic api copy 记录
- 决策树算法
- Chrome扩展及应用开发 入门笔记(一)
- 剖析微信公众平台第三方开发
- vb.net 调用wininet.dll的FTP上传文件方法失败
- Android 新控件RecyclerView
- JSTL中if...else...逻辑判断的简单用法
- Java多线程笔记
- php JpGraph 安装配置 基础学习
- 嘻唰唰第五批之三 抽象基类
- Access to the path "Library\UnityAssemblies\UnityEngine.xml" is denied.
- MYSQL索引及慢查询优化简析
- Git的分支管理
- android.content.res.Resources$NotFoundException: String resource ID #0x1