初识----RecyclerView

    xiaoxiao2024-04-19  6

    整体认知RecyclerView , 他的特点和方案:

    特点一: 不关心Item是否显示在正确的位置,也不关心它如何显示; 特点二: 不关心Item之间如何分隔; 特点三: 不关注Item增加和删除的动画效果; 特点四 :仅仅关注如何回收和复用View

    特点一解决方案:通过LayoutManager来确定RecyclerView的显示风格:

    recyclerView.setLayoutManager(LinearLayoutManager); recyclerView.setLayoutManager(GridLayoutManager); recyclerView.setLayoutManager(StaggeredGridLayoutManager);

    特点二解决方案:通过ItemDecoration定义Item之间的分隔效果:

    onDraw();//绘制分隔线 onOverDraw();//绘制分隔线

    当然如果背景比较简单可以通过background和margin属性实现;

    特点三解决方案:通过引入ItemAnimator来实现Item增删的动画效果

    综上所述:可以知道RecyclerView是一个插件式的架构,他通过LayoutManager , ItemDecoration , ItemAnimator的组合来实现我们的需求.

    RecyclerView首次强制开发者使用ViewHolder模式:所以他没有使用传统的BaseAdapter,而是自己提供了一个RecyclerView.Adapter;

    RecyclerView能干什么?

    1.ListView 2.GridView 3.横向ListView 4.横向GridView 5.瀑布流 6.定制Item增加和删除动画-----ItemAnimator 前五项是通过不同的LayoutManager就能控制 , 当然我们还可以自定义布局管理器来实现更多更丰富的效果

    下面我们来新建个项目来感受下RecyclerView的神奇,伟大,不可思议吧…

    首先:在app的build.gradle中添加依赖

    dependencies { compile 'com.android.support:recyclerview-v7:24.0.0' }

    第二步:在layout布局文件中添加

    <android.support.v7.widget.RecyclerView android:id="@+id/id_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" />

    第三步创建RecyclerView的适配器

    public class RSimpleAdapter extend RecyclerView.Adapter<MyViewHolder>{ private LayoutInflater mInflater; private Context mContext; private List<String> mDatas; public RSimpleAdapter(Context context, List<String> datas) { this.mContext = context; this.mDatas = datas; mInflater=LayoutInflater.from(context); } /** * 创建ViewHolder * @param parent * @param viewType * @return */ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=mInflater.inflate(R.layout.item_single_textview,parent,false); MyViewHolder viewHolder=new MyViewHolder(view); return viewHolder; } /** * 绑定ViewHolder * @param holder * @param position */ @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(mDatas.get(position)); } @Override public int getItemCount() { return mDatas.size(); } }

    第四步:添加分隔线类ItemDecoration示例代码地址: https://github.com/arjinmc/RecyclerViewDecoration/blob/master/RecyclerViewDecoration/app/src/main/java/com/arjinmc/recyclerviewdecoration/RecyclerViewItemDecoration.java

    该ItemDecoration支持图片分隔,虚线分隔,其他简单 自定义的分隔线;

    第五步:初始化RecyclerView并设置布局管理器和分隔线

    private void initView() { mRecyclerView= (RecyclerView) findViewById(R.id.id_recycler_view); mAdapter=new RSimpleAdapter(this,mDatas); mRecyclerView.setAdapter(mAdapter); //设置RecyclerView的布局管理器 LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); mRecyclerView.setLayoutManager(linearLayoutManager); //设置RecyclerView的Item间的分割线 mRecyclerView.addItemDecoration(new RItemDecoration(RItemDecoration.MODE_HORIZONTAL,this,R.drawable.divider));//后面三个int类型的参数:白色宽,红色宽和最后一个貌似无效 }

    既然是初始那就先实现一般ListView;

    转载请注明原文地址: https://ju.6miu.com/read-1288135.html
    最新回复(0)