安卓开发中RecycleView简单使用步骤

RecycleView的简单使用

RecycleView的简单使用总共分为以下几个步骤:

  1. 在Layout中寻找合适位置添加RecycleView(如果输入RecycleView没有弹出相关控件,可以去添加一下依赖文件);
  2. 创建一个recycleView_item.xml文件,这个文件是单个recycleView的布局样式,比如:
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:orientation="vertical"
    android:layout_margin="5dp"
    >
    <ImageView
        android:id="@+id/smsImage"
        android:layout_width="50dp"
        android:layout_height="50dp"
        />
    <TextView
        android:id="@+id/smsText"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:textSize="20sp"
        />
</LinearLayout>


定义的是图片加文字,注意一下,这个layout布局的高宽需要控制好,防止出现遮挡或者显示不全的情况。

  1. 创建一个pojo类,pojo其实就是一个名称,类里面采用映射方法,先定义两个参数,然后通过code->generate->constructor和code->generate->Getter and Setter对定义的参数进行重写,该pojo类将作为适配器中List泛型;
  2. 最最最重要的东西来了,适配器Adapter。什么是适配器,我的理解就是将控件与java类联系在一起的东西。可能有疑问,不是用findViewById就可以吗?没错的,可是对于recycleView这个控件来说,其操作可能比较复杂,需要一个东西去很好的管理这个控件。下面通过代码来说明适配器如何配置(最简单的配置,如果添加事件或者别的东西需要再改动):
public class SmsRecycleViewAdpter extends RecyclerView.Adapter<SmsRecycleViewAdpter.SmsViewHolder> {
     


   private List<Sms_pojo> mDatas;

   class SmsViewHolder extends RecyclerView.ViewHolder {
     
       TextView tv;
       ImageView imageView;

       public SmsViewHolder(@NonNull View itemView) {
     
           super(itemView);
           tv = itemView.findViewById(R.id.smsText);
           imageView = itemView.findViewById(R.id.smsImage);
       }
   }


   @NonNull

   @Override
   public SmsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     

       View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sms_item, parent, false);
       SmsViewHolder holder = new SmsViewHolder(view);
       return holder;
   }

   @Override
   public void onBindViewHolder(@NonNull SmsViewHolder holder, int position) {
     
       Sms_pojo sms_pojo = mDatas.get(position);
       holder.tv.setText(sms_pojo.getName());
       holder.imageView.setImageResource(sms_pojo.getImageId());


   }
     public SmsRecycleViewAdpter(List<Sms_pojo> datas) {
     
       this.mDatas = datas;

   }
   @Override
   public int getItemCount() {
     
       return mDatas.size();
   }


}

创建这个适配器需要有几个步骤,并不是对着网上的程序敲进去进行了。首先创建适配器类并继承RecyclerView.Adapter没有什么毛病,至于后面的泛型,是后添加的 。创建好了适配器(SmsRecycleViewAdpter)类之后,系统会为我们自动实现下面的方法:

  @NonNull

   @Override
   public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     
       return false;
   }

   @Override
   public void onBindViewHolder(@NonNull Holder  holder, int position) {
     
   }
 
   @Override
   public int getItemCount() {
     
       return 0;
   }
}

接下来需要在该类中创建一个内部Holder类(public),继承自Holder,Holder的英文翻译是持有者,我的理解它应该是View管理者,这与它自动创建的构造方法有关。下一步将一起完成适配器类的设置。

  1. 首先将适配器类中自动重写的方法体中的Holder全部修改为我们创建的Holder类,同时在适配器类定义那里添加泛型中间放置定义的Holder,格式为adapter.holder/>。然后再在定义的holder内部类中初始化控件。定义变量List泛型,这里就是添加映射pojo类/>,该变量将在适配器类的构造函数中初始化。onCreateViewHolder()方法作用是将holder 与View绑定,onBindViewHolder()方法是将recycleView_item.xml与holder,这样就通过holder这个中间量将View与布局控件绑定在一起,呈现的关系为:View->holder->.xml。整个适配器简单定义过程就是这样的。
  2. 切换到recycleView控件所在的布局文件所对应的类,创建RecycleView对象,创建List<>,创建布局管理(线性为LinearLayout,网格的为GridLayout,还有个瀑布流布局),初始化recycleView对象并设置其分割线,通过addItemDecoration()方法,这里可以调用安卓自带的分割线,也可以自定义分割线。系统自带的使用方法:
 recyclerView.addItemDecoration(new DividerItemDecoration(mContext,LinearLayoutManager.HORIZONTAL));

自定义分割线方法:

DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(mContext, LinearLayout.HORIZONTAL);
        dividerItemDecoration.setDrawable(mContext.getDrawable(R.drawable.divider));
        recyclerView.addItemDecoration(dividerItemDecoration);

这里的R.drawable.divider资源文件为分割线资源文件,创建方法为在drawable中创建divider.xml,具体样式可以自行设置,例如(如果为横向就设置分割线的宽,纵向就设置分割线的高):


<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <size android:width="1dp" />
    <solid android:color="#512DA8"/>
shape>

最后:
如何让recycleView中出现内容呢,别忘了创建的List<>,通过把pojo映射类放入<>,就可以很轻松的实现内容的显示。比如要添加一组数据,就可以通过pojo类初始化一个对象,然后把该初始化的对象添加进List<>中,例如(我这里使用的是一个循环,显示20组数据):

list = new ArrayList<pojo>();
        for (int i = 0; i < 20; i++) {
     
            Sms_pojo sms_pojo = new Sms_pojo("获取赞"+i+"个", R.drawable.head);
            mdate.add(sms_pojo);
        }

这样操作就能将recycleView进行简单创建和使用了,与ListView区别就在于内容呈现方式,RecycleView除了线性布局外还有网格布局和瀑布流布局并且切换布局很方便,只需要修改几行代码就可以了,可以自行百度。

你可能感兴趣的:(安卓)