程序笔记   发布时间:2022-07-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了安卓控件RecycleView的简单使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

RecycleView的使用@H_674_1@

目录
  • RecycleView的使用

技术概述

RecycleView是谷歌官方对ListView的改进(并不是替代),在性能和使用体验上都有了较大的改善。在有限大小的空间上,需要呈现出数量不定的内容块,且这些内容块有一定重复性时,一般是让其在可视空间内滚动。我们通常会优先选择RecycleView实现这类功能,例如消息列表、任务视图等

技术详述

在此之前,我们需要知道:

  • RecycleView:一个强大的滚动控件。
  • ViewHolder:容纳和管理view视图,也就是列表里面的一个个子项。使用它可以让代码不必每次都重新创建很多对象,从而使性能大大提示
  • RecycleView.adapter:管理ViewHolder
使用与实现: 一:在界面xml中引入RecycleView,根据需要定制一个小视图的界面(就是需要重复的那一个个子项),然后使用Xml文档实现它。 二:实现RecycleView.adapter 一个典型的实现应该是实现了RecycleView.adapter中的三大方法、一个内部类ViewHolder和一个List。例如:
    List<UserItem> musers;

    public static class ViewHolder extends RecyclerView.ViewHolder{}

    @NonNull
    @Override
    public GridAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewTypE) {}

    @Override
    public void onBindViewHolder(@NonNull GridAdapter.ViewHolder holder, int position) {}

    @Override
    public int getItemCount() {}

一般来说,list用于存放子项的pojo。onCreateViewHolder用于创建ViewHolder。getItemCount用于告知List的长度(即子项的个数)。onBindViewHolder用于对每个子项执行具体的操作,可以根据position对具体子项对应的实例进行操作,例如点击后数值的改变等,在这里。它会在每个子项滚动到屏幕内的时候执行。

三:引用。首先利用findViewById()实例化RecycleView。然后使用setLayoutManager设置LayoutManager以及使用setAdapter设置adapter。值得一提的是,绝大多数情况下,我们使用LinearLayoutManager,这样呈现的就是常见的线性布局。列举两个特殊一点的: 例如GridLayoutManager ,指定为4列,效果如下:

安卓控件RecycleView的简单使用

例如流式布局,这个比较麻烦,建议使用开源控件,我们一般的历史记录,标签等可以用这个实现,效果如下(网图): 可参流式布局相关资料

安卓控件RecycleView的简单使用

四:筛选。如果需要对内容进行筛选,可将适配器继承Filterable接口

extends RecyclerView.Adapter<UserRecyclerViewAdapter.MyViewHolder> implements Filterable 

此后需要完成接口要求实现的函数

@Override
    public Filter getFilter() {

        return new Filter() {
            //执行过滤操作
            @Override
            protected FilterResults performFiltering(CharSequence charSequencE) {
              //执行某些需要的数据过滤操作 ,过滤内容存放在charSequence
            }

            //把过滤后的值返回出来
            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
               ...
               notifyDataSetChanged();
            }
        };
    }

再在需要recycleview有过滤的地方引用

Adapter.getFilter().filter(s.toString());

遇到问题和解决

问题一:当在子项中需要获得context时(例如动态添加内容),在adapter中无论是使用getActivity还是getContext,一般情况下是无效的(除非是包含了当前view的引用的函数,那么可以直接利用这个引用的context)。 解决:最简单的解决方法就是在adapter构造函数中加入context形参,使用时需要传入当前的context,这样在adapter的每个需要的地方的可以正常使用需要context的api。

问题二:父视图是RelativeLayout 或者 FrameLayout,无法动态添加控件。 解决:改为或者嵌入LinearLayout。

总结

总的来说,RecycleView是一个常用且功能强大的安卓控件。其高度的解耦性、灵活性赋予了它强大的可拓展性,使得它的视图、业务逻辑的定制和复用更为方便。它很容易上手,但在某些方面却又太过繁琐。因此现在,GitHub上面也有了一些对其进行了一定改造的控件。但这些控件的规范程度、可拓展性还是稍逊一筹的,大部分只适用于特定场合。学会了RecycleView,对于其变形控件的学习也更加方便

文献

Android 控件 RecyclerView

大佬总结

以上是大佬教程为你收集整理的安卓控件RecycleView的简单使用全部内容,希望文章能够帮你解决安卓控件RecycleView的简单使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。