zoukankan      html  css  js  c++  java
  • listview的工作机制

      listView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到listView的长度,然后根据这个长度,调用getView()逐一绘制每一行。

     系统显示列表时,首先实例化一个适配器(这里将实例化自定义的适配器)。当手动完成适配时,必须手动映射数据,这需要重写getView()方法。系统在绘制列表的每一行的时候将调用此方法。getView()有三个参数,position表示将显示的是第几行,covertView是从布局文件中inflate来的布局。我们用LayoutInflater的方法将定义好的item.xml文件提取成View实例用来显示。然后将xml文件中的各个组件实例化(简单的view.findViewById()方法)。这样便可以将数据对应到各个组件上了。但是为了响应点击事件,需要为它添加点击监听器,这样就能捕获点击事件。系统要绘制ListView了,他首先获得要绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(实际上是一个ViewGroup),然后再实例并设置各个组件,显示之。好了,绘制完这一行了。那再绘制下一行,直到绘完为止。

        Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。

    例子:

    //上下文,自定义的listview元素项布局,listview对应的list

    MineTravelAdapter mineTravelAdapter = new MineTravelAdapter(MineActivity.this, R.layout.mine_travel_item, mineTravel);

    listView.setAdapter(mineTravelAdapter);

    private class MineMoodAdapter extends ArrayAdapter<MineMoodItem> {

    private int resourceId;

    public MineMoodAdapter(Context context, int resource,List<MineMoodItem> objects) {
    super(context, resource, objects);
    resourceId = resource;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    MineMoodItem mineMood = getItem(position);// 获取当前项的MineMood实例

    View view = LayoutInflater.from(getContext()).inflate(resourceId,null);  //获得listview的子项布局

    // 获取子项布局里面的文本控件
    TextView mineMoodTime = (TextView) view.findViewById(R.id.time);  //注意是view.findViewById();
    TextView mineMoodSpotname = (TextView) view.findViewById(R.id.spotname);

    // 填充数据
    mineMoodTime.setText(mineMood.getTime());
    mineMoodSpotname.setText(mineMood.getSpotName());
    return view;
    }

    }

  • 相关阅读:
    css中盒模型的理解与整理
    Java从入门到精通——数据库篇Mongo DB GridFS文件系统
    Java从入门到精通——数据库篇Mongo DB 导出,导入,备份
    Java从入门到精通——数据库篇Mongo DB 安装启动及配置详解
    MySQL基于mysqldump快速搭建从库
    Linux下C语言操作MySQL数据库
    html dl dt dd 标签语法与使用
    人的一切痛苦,本质上都是对自己的无能的愤怒
    游泳健康好处多
    从疲劳到猝死只需6步!
  • 原文地址:https://www.cnblogs.com/new-comer/p/5416913.html
Copyright © 2011-2022 走看看