选择控件

1、适配器(Adapter的作用)
   适配器对不同数据源的数据进行封装,可以对外提供统一的访问方式,这样控件本身
   不关心数据的来源,只要绑定相应的适配器就可以了,简化了各种控件读取数据程序的复杂性。

2、主要的适配器类型
   2.1、ArrayAdapter  它封装的是数组
   2.2、SimpleAdapter  它封装的是一个ArrayList<Map<String,Object>>
   2.4、BaseAdapter    用户自定义的Adapter
   2.4、CursorSimpleAdapter 它封装的是一个操作数据库所返回的Cursor

3、ListView 搭配使用ArrayAdapter
    1、配置适配器 2、绑定适配器
   假如一个Activity中只有一个ListView控件,我们可以直接继承ListActivity
   如果继承了ListActivity,又想使用自定义布局文件
   那个这个布局文件中必须存在ListActivity中自带的
   那个ListView控件的引用,名字是@android:id/list

4、ListView 搭配使用SimpleAdapter(自定义布局文件)
   SimpleAdapter封装的数据是集合。集合内是一个map。
   用来自定义布局

5、spinner (微调控件)
        //设置微调控件的外观
        adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,citys);
 //设置微调控件弹出下拉菜单的外观
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
6、GridView(网格控件)操作方式和ListView一样
    常用属性:
     android:numColumns="3" //一行显示的单元格数
     android:horizontalSpacing="5dp" //单元格间水平间距
     android:verticalSpacing="5dp"   //单元格间垂直间距
     android:stretchMode="columnWidth"  //设置延伸模式来充满整个屏幕
     android:columnWidth="64dp"  //设置单元格的宽度
7、AutoCompleteTextView(自动完成文本)

8、Gallery(画廊)


9、BaseAdapter(基础适配器)
  ArrayAdapter,SimpleAdapter都继承BaseAdapter
  所以我们同样可以继承BaseAdapter来实现自定义的适配器

  继承 BaseAdapter 要重写以下几个方法
  /**
    * 设置adapter共有几项数据
  */
 @Override
    public int getCount() {
 return names.length;
    }

    /**
      * 通过调用getItemAtPosition(position) 方法所返回的所绑定的数据源
      */
 @Override
 public Object getItem(int position) {
  return names[position];
 }

 /**
   * 返回所点击选项的索引号
 */
 @Override
 public long getItemId(int position) {
  return position;
 }

 /**
   * 用来生成视图控件的方法,有几行数据就调用几次 View是所有控件的父类
   */
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
 }

10、布局填充泵用来解析xml文件生成视图
    // 得到布局xml文件的解析器
     LayoutInflater layoutInflater = getLayoutInflater();
    // 通过布局填充泵来解析xml文件,使之生成一个控件视图
     View view = layoutInflater.inflate(R.layout.my, null);

11、ListView 控件的优化,当一行数据离开ListView控件的时候
    它不会被释放,而是放入回收站,那么下面上来的数据就会从
    回收站中取出来(取出来的放在了convertView),不会重新
    解析填充,无非就是把回收到的对象内的数据进行修改下重复
    使用,提高了效率。
12、持有者模式优化
    每行数据都持有一个管理对象,这个对象会帮你查找想要的组件,
    第一次它会查找,找到后保存起来,下次再要其查找的话,它会
    把第一次找到的对象直接返回,而不会重复查找,提高了查找的
    效率。
 
           

   

原文地址:https://www.cnblogs.com/liangxiaofeng/p/3491559.html