1.getView()界面每显示一行都会调用getview()方法

2.初始化数据

在getview()

lsitveiw复杂行布局的实现

1.创建行布局文件  Ctrl+N

2.getview()设置行布局文件

//1.获得布局转换器

LayoutInflater inflater = getLayoutInflater();

//2.将行布局文件转换为View对象

View layout = inflater.inflate(R.layout.list_item, null);

//3.查找行布局中的控件

TextView tvTitle = (TextView) layout.findViewById(R.id.tv_title);

TextView tvSubTitle = (TextView) layout.findViewById(R.id.tv_subtitle);

return layout;

使用自己创建的适配器对象

1.创建一个类继承BaseAdapter{重写四个方法}

2.使用

数据封装

1.创建一个类保存每一行的数据

成员变量类型   个数  取决于  行的控件所要保存的数据

创建带参的构造方法   get()  set()

2.创建容器保存Data数据

ArrayList<Data> list=new ArrayList<Data>();

3.初始化数据

4.getview()获得每一行的数据  Data

空指针

错误:

(TextView) findViewById(R.id.tv_subtitle);

正确:

(TextView) layout.findViewById(R.id.tv_title);

优化

1.复用行布局

只需要创建界面可见最多行的布局对象,其他界面不可见的行,复用界面消失的行布局

convertView:保存即将消失的行布局对象索引

注意:getview()中的变量不要声明为成员变量

1.//判断convertView是否为空

View layout =null;

if (convertView==null) {//convertView为空就创建界面可见最多行的布局对象

//获得布局转换器

LayoutInflater inflater = getLayoutInflater();

//将行布局文件转换为View对象

layout = inflater.inflate(R.layout.list_item, null);

}else {//convertView不为空,说明convertView保存了消失的行布局对象索引

就复用消失的行布局对象

layout=convertView;

}

优化二:减少控件查找次数

实现步骤:

1.创建ViewHolder类:保存查找到的控件的索引     (笔记)

2.保存查找到的控件索引 并且  为布局设置标签(保存viewHolder索引)

3.复用的行  只需要从标签里拿到控件的索引   不需要再次findviewbyid()

查找控件

ListView 数据更新

1.对容器进行操作

2.适配器通知ListView更新界面 通过调用mAdapter.notifyDataSetChanged();

Listveiw行点击事件

1.普通点击事件

2.长按点击事件

行点击事件失效

1.行布局中放入Button    控件抢占焦点

在抢占焦点的控件中设置: android:focusable="false"

在最外层布局设置:

android:descendantFocusability="blocksDescendants" >

1. 为Listview注册上下文菜单

registerForContextMenu(mListView);

2.设置长按点击事件   保存长按行的行号

3.重写onCreateContextMenu();

4.重写onContextItemSelected();菜单点击事件

转载于:https://blog.51cto.com/1206995290qq/1830799

listView基本实现相关推荐

  1. Android ListView 点击item改变item的背景颜色(ListView实现光标移动)

    一下demo 地址 实现的效果图如下 ListView 光标移动,实现很是简单,这里是指item背景的改变 使用 listSelector listSelector  用户指定当前选中item 的颜色 ...

  2. Android ListView 删除 item

    实现效果 主要使用方法 是, remove 之后在刷新界面 adapter 里面的代码 public class MyAdapter extends BaseAdapter {private List ...

  3. ListView 添加头部 和尾部 布局 (addHeaderView 和 addFooterView)

    ListView 添加头部 和尾部 布局  其实很简单 ,listview 暴露的有方法addHeaderView 和 addFooterView 从源码里面可以看到, addHeaderView 和 ...

  4. Android ListView item设置分割线以及分割线宽度

    ListView item设置分割线的方法:setDivider ListView item设置分割线宽度的方法:setDividerHeight // 设置分割线 listView.setDivid ...

  5. Android ListView (多个adapter 说明)

    最近维护项目,项目里面使用的都是ListView 这里也对ListView 回顾一下 以下 demo 地址 ListView 在Android 里面用来实现列表的, 在xml 中创建ListView ...

  6. 玩转android自定义控件二——自定义索引栏listview

    带索引栏的listview,在android开发非常普遍,方便用户进行字母索引,就像微信通讯录这样: 今天,我们就从零到一实现这个具有索引栏的listview. 怎么实现这个控件了,我们应当梳理出一个 ...

  7. ListView style

    步骤一:在使用的ListView的activiey里使用android:theme="@style/Theme的名字" 步骤二:创建Themes.xml 在Themes.xml里定 ...

  8. Android自定义ListView的Item无法响应OnItemClick的解决办法

    转: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就 ...

  9. 【原创】ListView快速滚动至新添加一行(自动滚动)

    在C#开发中我们经常要开发一些日志系统,尤其是基于ListView的日志显示系统. 但是当日志增多是你是否有一些困扰,就是它为什么不会自动滚动至最后一行. 以下是一小段代码,希望可以帮助你. publ ...

  10. Android使用ListView控件问题

    Android使用ListView控件问题: The application has stopped unexpectedly, please try again. 开发环境:android 1.6 ...

最新文章

  1. java取网页数据_浅析JAVA实现网页取内容
  2. php安装问题_PHP安装十大经典问题
  3. 通过微软的cors类库,让ASP.NET Web API 支持 CORS
  4. 系统程序员成长计划-组合的威力
  5. 【软件工程】关于计算机的一些问答与思考
  6. 最实用的logback讲解(2)—appender
  7. 用C++实现的壳(基础版)
  8. Error -Cannot add direct child without default aggregation defined for control
  9. 【课程】MIT最新深度学习课程集
  10. myeclipse2017安装与破解
  11. Java 算法 字符删除
  12. java 字典 引用_java中数据字典的使用
  13. 《Python学习笔记》——南溪的python编程笔记
  14. MATLAB中的光照处理
  15. LigerUI学习使用
  16. 响应面matlab算法,结构可靠度分析的响应面法及其Matlab实现参考文件.pdf
  17. NANDFlash原理
  18. Vue安装环境最全教程,傻瓜式安装
  19. macOS 虚拟摄像头:CamTwist for Mac
  20. jQuery实用网页元素颜色修改插件

热门文章

  1. goframe框架交叉编译go项目
  2. Spring源码分析-从源码看BeanFactory和FactoryBean的区别
  3. java test 用法,pytest基本用法简介
  4. 【MyBatis框架】高级映射-一对一查询
  5. IPv6下网络编程实例
  6. 想在研发群里装?先学会这几个排查K8s问题的办法
  7. java作业_Java作业总结
  8. JVM类加载机制详解
  9. 北京金融局、通州区政府与蚂蚁金服战略合作 共防系统性金融风
  10. 【Aladdin Unity3D Shader编程】之三 光照模型(二)