Android RecyclerView

Android RecyclerView

Recycler 中文:反复循环器

  1. 不关心Item是否显示在正确的位置,如何显示
  2. 不关心Item间如何分割
  3. 不关注Item增加与删除的动画效果
  4. 仅仅关注如何回收和复用View

LayoutManager 用来控制RecyclerView的不同显示风格

ItemDecoration 用来绘制Item间分割线及风格

ItemAnimator 用来控制Item的增加与删除动画

RecyclerView能做什么?

  1. ListView
  2. Gridview
  3. 横向ListView
  4. 横向GridView
  5. 瀑布流
  6. 定制Item增加与删除动画

实现ListView

首先导入RecyclerView包,Android studio中 File-> Project Structure -> Dependencies -> + -> Library Dependency -> support V7 RecyclerView。导入成功后就可以使用RecyclerView了。

  1. 创建布局

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerview"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
  2. 根据需求创建ItemView(我的是展示一个TextView)

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="72dp"
        android:background="#44ff0000"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="TextView" />
    </LinearLayout>
  3. 创建Adapter

    在RecyclerView中强制使用ViewHolder,所以我们要先创建ViewHolder类

    class MyViewHolder extends RecyclerView.ViewHolder {
      TextView tv;
      public MyViewHolder(View itemView) {
          super(itemView);
          tv = (TextView) itemView.findViewById(R.id.textView);
      }
    }

    我们的Adapter继承RecyclerView.Adapter,传入的是我们刚创建的ViewHolder类。

    构造方法, datas是我们要传入的数据

    public MySimpleAdapter(Context context, List<String> datas) {
        this.mContext = context;
        this.mDatas = datas;
        layoutInflater = LayoutInflater.from(context);
    }

    重写其三个方法

    //创建
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView = layoutInflater.inflate(R.layout.itemview, parent, false);
        MyViewHolder myViewHolder = new MyViewHolder(mView);
        return myViewHolder;
    }
    
    //绑定
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.tv.setText(mDatas.get(position));
    }
    
    
    @Override
    public int getItemCount() {
        return mDatas.size();
    }
  4. Activity中调用

    recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    simpleAdapter = new MySimpleAdapter(this, mDatas);
    recyclerView.setAdapter(simpleAdapter);
  5. 通过LayoutManager设置样式

    //垂直
    LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);
  6. 通过ItemDecoration设置分割线

    recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
    

    我使用的是25.2.0版本,DividerItemDecoration()是已经系统实现了,不需要我们再自己去写。

    效果:

  7. 如何自定义分割线颜色宽高

    在drawable下新建newdivider.xml文件。

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
       //高度
      <size android:height="4dp" />
    
      //颜色变化
      <gradient
        android:centerColor="@color/colorPrimary"
        android:endColor="@color/colorPrimaryDark"
        android:startColor="@color/colorAccent"
        android:type="linear" />
    
    </shape>

    在styles.xml文件中,在你使用的theme中添加

    <item name="android:listDivider">@drawable/newdivider</item>

    效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值