RecyclerView使用进阶(一)
来源:互联网 发布:反网络爬虫 编辑:程序博客网 时间:2024/05/18 13:43
终于开始自己记录自己的学习Android之路。一方面为了自己以后可以更方便的查找,另一方面也可以时常复习。
当我还用着ListView的时候,换到了另外一家公司。老大交给我一些任务,到了要交差的时候,老大review了我的代码,皱了一下眉头,说我这完成百分之三十都不到,然后继续忙了,把我剩下的任务,交给南海龙王做(公司每人都有一个花名),他是我的师傅,他用了一个下午的时间,搞定了我花了两周的任务,可见我是多么菜。这个版本上线后我看了他们的代码,咦,卧槽,很吊的样子,这是什么东西recyclerview???然后就开始了我的模仿之路。
一、RecyclerView初识
简介:RecyclerView是android5.0以后推出的view,同时谷歌也推出了对应的向下的兼容库,供我们在5.0以下的设备中使用它。
区别:ListView、GridView != RecylcerView
1.不关心Item是否显示在正确的位置,如何显示2.不关心item间的如何分割3.不关注Item增加与删除的动画效果。
4.仅仅关注如何回收和复用View
RecyclerView相关的重要类(这些类解决了上述不关心的问题)
1.Adapter2.ViewHolder
3.LayoutManager-设置显示的风格是ListView还是GridView或者是瀑布流
4.itemDecoration -设置item间的间隔
5.itemAnimator-设置删除的动画效果
RecyclerView功能体现
1.ListView和GridView2.横向ListView和横向Gridview3.瀑布流 ---LayoutManager控制
4.定制item增加与删除动画 ---ItemAnimator
二、RecyclerViewDemo1
1.添加依赖
在AndroidStudio的
build.gradle
中添加依赖dependencies{
compile
'com.android.support:recyclerview-v7:21.0.+'
}
2.编码
2.1 现在XML中添加好布局主要设置好ID
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/bank_cards" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" />
2.2 在MainActivity中获取这个RecyclerView,并声明LayoutManage和Adapter
//获取RecyclerView
mRecyclerView = (RecyclerView) findViewById(R.id.bank_cards);
//创建默认的线性LayoutManager
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//创建并设置Adapter
mRecyclerView.setAdapter(mAdapter = new HomeAdapter());
3.Adapter的创建
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_list,parent,false)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.id_num); } } }
4.添加数据源
protected void initData(){ mDatas = new ArrayList<String>(); for (int i='A';i<'z';i++) { mDatas.add(""+(char)i); } }
5.贴上完整代码
public class MainActivity extends AppCompatActivity { private List<String> mDatas; private HomeAdapter mAdapter; private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); mRecyclerView = (RecyclerView) findViewById(R.id.bank_cards); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(mAdapter = new HomeAdapter()); }//这是一个实验 protected void initData(){ mDatas = new ArrayList<String>(); for (int i='A';i<'z';i++) { mDatas.add(""+(char)i); } } public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_list,parent,false)); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View view) { super(view); tv = (TextView) view.findViewById(R.id.id_num); } } }}
1 0
- RecyclerView使用进阶(一)
- RecyclerView进阶(一)item分割线
- RecyclerView使用(一)
- RecyclerView进阶使用
- RecyclerView,ItemDecoration进阶使用!!!
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView的使用(一)
- RecyclerView使用详解(一)
- Recyclerview使用体验(一)
- RecyclerView的使用(一)
- Android进阶之RecyclerView使用
- Android RecyclerView使用(一) 基本使用
- nyoj 174 Max Sequence(最大子串和变形)
- HDU 2647 Reward
- js 调用 oc 方法来发起微信支付
- Git 2.9.3 TortoiseGit 2.2.0 安装配置
- dubbo 搭建 创建消费者 调用消费者 即是消费者又是提供者(六)
- RecyclerView使用进阶(一)
- Android RTMP直播
- ShardedJedis 不支持key的模糊查询
- 自定义转场
- android 中Timer的写法
- 【Spark Java API】Transformation(12)—zipPartitions、zip
- [专题2016-08-12]论数据迁移测试
- Toast的封装
- LightOJ 1030 Discovering Gold 概率dp