Android ListView与RecycleView的对比使用解析

 更新时间:2017年12月16日 16:21:47   作者:Stars-one  
这篇文章主要介绍了Android ListView与RecycleView的对比使用解析,需要的朋友可以参考下

ListView,就如其名,是用来显示列表的一种View,而RecycleView,是其的加强版,今天带来的是这两个几乎具有相同的功能的对比使用

先从ListView说起吧

ListView:

1.在布局文件中使用ListView,并为其定义一个id,方便我们之后的调用,宽高与父控件相同

2.准备数据,将数据添加到ArrayAdapter适配器当中

3.在Activity的java文件中使用findviewbyid找到ListView实例,为其设置Adapter

4.实现ListView的item项点击事件,直接使用Listview定义的setitemonClick方法就行了

这里最为重要的一步其实是第二步,我们可以看到下面的代码,定义了一组String类型的数组,之后创建ArrayAdapter适配器,注意String,是一个泛型,后面的构造函数里的参数分别为上下文android.R.Layout.simple_list_item 1是安卓系统给的一个item布局,最后一项是String数组,也就是数据,之后寻找ListView的实例,调用setAdapter方法设置适配器

 public class MainActivity extends AppCompatActivity {
    private String[] data = {"Apple" ,"Banana","Orange","WatermeLon"
        "Pear","Grape","Pineapple","Strawberry","Cherry","Mango",
        "Apple","Banana","Orange" ,"Watermelon" ,"Pear" ,"Grape",
        "Pineapple","Strawberry","Cherry","Mango"};
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity.main);
    ArrayAdapter<String> adapter = new ArrayAdapter<String(MainActivity.this, android.R.Layout.simple_list_item 1, data);
    ListView listView = (ListView) findViewById(R.id.list _view);
    listView.setAdapter(adapter);
  }
}

这是一个简单的例子,但是,我们知道第二个参数是安卓提供的一个item布局,这个布局过于简单,我们想要实现一个自定义布局怎么办?我们需要改造一下ArrayAdapter这个适配器

下面便是自定义布局并使用的步骤:

1.创建一个item的布局,也就是我们的自定义布局

我定义了两个各占一半的textview,记得根标签的高使用wrap_content

2.定义一个T类,作为适配器的泛型,(类似之前的String),里面需要一个构造方法,成员变量和get方法

不知道为什么会有警告,用的public,可以正常使用,若是改为其他,另外那边调用就会出错了

3.创建一个适配器类,使其继承ArrayAdapter<T>(T就是第二步定义的类),里面需要一个构造方法,还需要复写getView方法

4.准备数据,将数据添加到第三步的适配器类中,之后与上面所说的步骤一样,找到Listview的实例,设置适配器

 效果

 RecycleView:

由于这个是Android团队新推出的,需要我们添加依赖才可以使用,记得点击sync now

使用步骤:

1.在布局文件中使用RecyclerView,定义id,宽高与空间相同

2.准备RecyclerView的子项item布局,之后要在适配器类中使用,这里就不在赘述

3.定义个泛型类,如之前在ListView中所说的T类,适配器的泛型

3.定义一个适配器T类,使其继承RecyclerView.Adapter<T.ViewHolder>(ViewHolder是T类中的一个内部类),需要一个构造方法接收数据源,复写三个方法

RecyclerAdapter是继承RecyclerView.Adapter<RecyclerAdapter.ViewHolder>

这个尖括号里的本来应该是RecyclerView.ViewHolder,但是我们在RecyclerAdapter里定义了一个内部类ViewHolder,使其继承了RecyclerView.ViewHolder,所以我们就可以在尖括号里直接调用内部类

我们先来看一下ViewHolder这个内部类,它里面有两个TextView的成员变量,之后,添加一个构造方法,参数是一个View,为这个两个textview通过findviewbyid找到实例

我们来看RecycleAdapter这个类,在开头我们就声明了一个List的成员变量students,之后,添加构造方法,传入一个LIst,将其赋值给RecycleAdapter的成员变量students

之后需要复写三个方法,OnCreateViewHolder,onBindViewHolder,getItemCount

onCreateViewHolder方法里面,首先就是通过LayoutInflater.from()方法接收一个context,之后,再通过inflate将item布局放进总布局中,之后再将这个view作为参数传到ViewHolder中去,同时,返回一个ViewHolder

onBindViewHolder方法,由list的get方法,获得list里面的某个对象,之后,由holder调用两个TextView的setText方法进行设置,举一反三,如果是imageview的话,同样可以使用setresource设置其显示的图片,设置的参数,我们可以直接由Student类中的get方法获得

 getItemCount 就是获得全部item的数量,这里item数量其实就是list中的项目,直接返回其的size就行了

4.准备数据,添加到适配器中

5.创建一个布局管理器LayoutManager,便于RecycleView设置布局,这里布局管理器有几种

一种的像LIstView的垂直排列,LinearlayoutManager

我们也可以将其改为水平排列,只需调用linearLayoutManger的setOrientation,设置为LinearLayoutManager.HORIZONTAL

还有GiidLayout网格布局 StaggerGildLayoutManager瀑布流布局,使用方法如上,不过,参数有所区别,想了解更多请转百度

6.通过findviewbyid方法找到RecycleView的实例,为其设置LayoutManager,设置Adapter

 7.设置onClick方法,RecycleView里没有onClick方法,需要我们自己写,在哪里写呢?在RecycleAdapter中的onBindViewHolder方法中

总结

以上所述是小编给大家介绍的Android ListView与RecycleView的对比使用解析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • Flutter实现旋转扫描效果

    Flutter实现旋转扫描效果

    这篇文章主要介绍了通过Flutter RotationTransition实现雷达旋转扫描的效果,文中的示例代码讲解详细,感兴趣的同学可以动手试一试
    2022-01-01
  • Android开发之底图局部加载移动的方法示例

    Android开发之底图局部加载移动的方法示例

    这篇文章主要介绍了Android开发之底图局部加载移动的方法,涉及Android针对图片与屏幕属性的读取、计算、设置等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • 使用 Swift 语言编写 Android 应用入门

    使用 Swift 语言编写 Android 应用入门

    为了能顺利使用这份向导,你需要: 1. 可以编译Swift源码的Linux环境。stdlib目前只能在Linux环境下编译成安卓可用版本。在尝试为安卓构建之前,确保你能够参考Swift项目的README为Linux做编译。
    2016-04-04
  • Android实战打飞机游戏之实现主角以及主角相关元素(3)

    Android实战打飞机游戏之实现主角以及主角相关元素(3)

    这篇文章主要为大家详细介绍了Android实战打飞机游戏之实现主角以及主角相关元素,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android原生视频播放VideoView的使用

    Android原生视频播放VideoView的使用

    这篇文章主要为大家详细介绍了Android原生视频播放VideoView的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • autojs模仿QQ长按弹窗菜单实现示例详解二

    autojs模仿QQ长按弹窗菜单实现示例详解二

    这篇文章主要为大家介绍了autojs模仿QQ长按弹窗菜单实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android多套环境的维护思路详解

    Android多套环境的维护思路详解

    这篇文章主要为大家介绍了Android多套环境的维护思路详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • android开发教程之实现listview下拉刷新和上拉刷新效果

    android开发教程之实现listview下拉刷新和上拉刷新效果

    这篇文章主要介绍了android实现listview下拉刷新和上拉刷新效果,Android的ListView上拉下拉刷新,原理都一样,在Touch事件中操作header/footer的paddingTop属性,需要的朋友可以参考下
    2014-02-02
  • Android Gradle 三方依赖管理详解

    Android Gradle 三方依赖管理详解

    这篇文章主要介绍了Android Gradle 三方依赖管理详解,Gradle的依赖管理是一个从开始接触Android开发就一直伴随着我们的问题,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Android编程之九宫格实现方法实例分析

    Android编程之九宫格实现方法实例分析

    这篇文章主要介绍了Android编程之九宫格实现方法,结合实例形式分析了Android九宫格的实现方法与具体步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-01-01

最新评论