zoukankan      html  css  js  c++  java
  • Android 查缺补漏之Adapter 和 LayoutInflater

      在之前的博客我也讲过 Adapter 和 inflater,但发现讲的不够清楚,好多读者看后有疑问,今天就结合API单独讲一次。

    Adapter :

      An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 

      意思是:适配器对象作为一个adapterview和底层数据、视图之间的桥梁。适配器提供对数据项的访问。适配器还负责对数据集中的每个项目进行视图制作。

    那什么是AdapterView

      内容一般是包含多项相同格式资源的列表,如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等。这些控件内容不能通过ListView.add的形式添加列表项,需指定一个Adapter对象,通过它获得显示数据。

      其中:

          ListView             列表,其中只能含有一个控件TextView


          Spinner             下拉列表,给用户提供选择


          Gallery               缩略图,已经被水平的ScrollView和ViewPicker取代,但也还算常用,是一个可以把子项以中心锁定,水平滚动的列表


          GridView              网格图,以表格形式显示资源,可以左右滑动的


    Adapter 分类:


      ArrayAdapter<数据类型> adapter = new ArrayAdapter<数据类型>(context:一般指当前Activity对象,layout:每个列表项显示的布局,data:数据源变量);


      SimpleAdapter adapter = new SimpleAdapter(context:一般指当前Activity对象,data:数据源变量,layout:每个列表项显示的布局,new String[]{}:数据源中的“键”,new int[]{}:显示数据源的控件ID);


      自定义Adapter类 adapter = new 自定义Adapter类构造方法


    绑定AdapterView对象到Adapter上

      AdapterView对象.setAdapter(Adapter对象); 如:ListView.setAdapter(MyAdapter);

    inflater

    LayoutInflater inflater = MainActivity.this.getLayoutInflater();
    View view;
    if (convertView==null){
        view = inflater.inflate(R.layout.item, null);
    }else{
        view = convertView;
    }

      在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。

    具体作用:

       1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
       2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
     
    获得 LayoutInflater 实例的三种方式
       1. LayoutInflater inflater = Activity.this.getLayoutInflater();//调用Activity的getLayoutInflater() 
       2. LayoutInflater inflater = LayoutInflater.from(context);  
       3. LayoutInflater inflater =  (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    知识点就这样,文档下载:Android官方API  http://pan.baidu.com/s/1dFvDhFr

      Be nice to people on the way up, because you'll need them on your way down.

  • 相关阅读:
    Processing中PImage类和loadImage()、createImage()函数的相关解析
    基于Maxmspjitter的基础【pixel shader】绘制模板Patcher
    Processing多窗口程序范例(三)
    SpringBoot:基于注解的@CachePut
    Android开发—错误记录1:W/System.err: java.net.ConnectException: Connection refused
    自控力第一章-我要做,我不要,我想要:什么是意志力?为什么意志力至关重要
    超算结课小结
    linpack_2
    搭建Linpack
    汇编程序返回dos
  • 原文地址:https://www.cnblogs.com/hxb2016/p/6137606.html
Copyright © 2011-2022 走看看