zoukankan      html  css  js  c++  java
  • Android——ListView学习笔记(一)

    主要记录一下在学习ListView的时候遇到的一些不会的知识点

    ListView是一个可以滑动的列表界面,其中每一行都可以理解为ListView的一个子项View,根据设置的布局来显示,每一行的样式都是一样的,只不过显示的数据不一样。而每一个子项要显示的View和具体数据要通过适配器(Adapter)来传递给ListView。ListView 针对List中每个item,要求 Adapter “给我一个视图” (getView)。

    ArrayAdapter(Context context, int item, T[] objects):数组适配器,这个适配器使用有一定的局限性,只能显示一行文本数据。

          Context是上下文对象

      item为布局Id,即ListView每一个子项的样式,系统提供了下面几个模板布局:

      1)       simple_list_item1:单独的一行文本框

      2)       simple_list_item2:有两个文本框组成

      3)       simple_list_item_checked每项都是由一个已选中的列表项

      4)       simple_list_item_multiple_choice:都带有一个复选框

      5)       simple_list_item_single_choice:都带有一个单选框

      data为要显示的数据,这里是一个泛型的数组对象

    如果需要自定义ArrayAdapter适配器,就需要继承ArrayAdapter并重写getView()方法,再构建不同的列表项。其中getView()方法在每个ListView子项被滚动到屏幕内的时候会被调用,通过getItem()得到当前项的实例,然后使用LayoutInflater来为这个子项加载我们传入的布局。

    LayoutInflater.from(context) 从给定的上下文中获取LayoutInflater获取,LayoutInflater可以理解为一个视图填充器。

    LayoutInflater.inflate(int Resourece,ViewGroup root,Boolean attachToRoot ):将一个.xml布局文件转为View

      Resourece为View布局的ID,在ListView中就是子项的布局

      root是生成的层次结构的根视图,在ListView中的意思是整个ListView界面的布局

      attachToRoot:如果root为null,attachToRoot将失去作用,设置任何值都没有意义如果root不为null,attachToRoot设为true,则会给加载的布局文件(即ID为Resourece的布局)的指定一个父布局,即root;如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效;在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true;

    getItem()、getContext ()、getView()、getActivity()、getResources()

    getView(int position,View converView,ViewGroup parent):getView()方法在刚启动ListView界面时显示屏幕内所有的ListView子项时和有新的ListView子项被滚动到屏幕内的时候会被调用,通过getItem()得到当前项的实例,返回的是一个View,也就是与Adapter数据对应的相应位置的行。

      position是位置,一般Adapter都是很多类型一样的数据展示在界面,该属性是判断显示在界面上的是第几个,通过position在Adapter自定义的数组或者集合中取值。并展示在界面上。

      converView 是展示在界面上的一个item,即每一行的View。每次显示一个item都调用一次getview方法但是每次调用的时候covertview为空(因为还没有旧的view),当显示完了之后。如果屏幕移动了之后,并且导致有些Item(也可以说是view)跑到屏幕外面,此时如果还有新的item需要产生,则这些item显示时调用的getview方法中的convertview参数就不是null,而是那些移出屏幕的view(旧view),我们所要做的就是将需要显示的item填充到这些回收的view(旧view)中去,最后注意convertview为null的不仅仅是初始显示的那些item,还有一些是已经开始移入屏幕但是还没有view被回收的那些item。

      parent 这个属性是加载xml视图时使用,在ListView中的意思是整个ListView界面的布局

    getItem(int position):获得当前传入数据的第position位置的值

    getContext():getContext():这个是View类中提供的方法,在继承了View的类中才可以调用,返回的是当前View运行在哪个Activity Context中。

    getActivity():获得Fragment依附的Activity对象。Fragment里边的getActivity()不推荐使用原因如下:这个方法会返回当前Fragment所附加的Activity,当Fragment生命周期结束并销毁时,getActivity()返回的是null,所以在使用时要注意判断null或者捕获空指针异常。

    getResources():获取放在资源文件/res中的内容。

  • 相关阅读:
    【pytest】(六) pytest中fixture的使用
    【pytest】(七) pytest的一些你爱不释手的插件
    【pytest】(五) pytest中的断言
    【pytest】(四) pytest的一些其他的运行用法
    本两周学习总结
    本两周学习总结
    本两周总结
    本两周学习总结
    本周学习总结(原生)
    本周学习总结(原生)
  • 原文地址:https://www.cnblogs.com/mulin1999/p/13167147.html
Copyright © 2011-2022 走看看