ListView讲解:

一、ListView这个控件是一个使用非常广泛的控件,值得深入的学习和研究。基本使用已经在Adapter中使用过了

二、常用的属性和方法

footerDividersEnabled:是否在footerView(表尾)前绘制一条分割线,默认是true

headerDividersEnabled:是否在headerView(表头)后绘制一条分割线,默认是true

divider:设置分割条,可以是颜色分割,也可以用drawable资源分割

dividerHeight:设置分隔条的高度

stackFromBottom:列表从底部开始显示,设置为true即可,好像没什么用。

cacheColorHint:如果你为ListView设置了一个图片作为Background的时候,当你拖动或者点击listView空白位置会发现item变成了变成黑色了,这是时候我们通过这个擦车ColorHint将颜色设置为透明:#000000

scrollbars ="none"或者setVerticalBarEnabled(true)隐藏滑动条

添加listView的表头或者表尾貌似只能在Java中操作

addHeaderView(View view):添加HeaderView(表头),括号里面是一个View对象,可以通过context上下文对象获得。

addFooterView(View view):添加foot二View(表尾),括号里面是一个view对象,同样也是可以通过context上下文对象获得。

addHeaderView(headerView,null,false):和上面的区别:设置Header是否可以被选中

addFooterView(footerView,null,false):和上面的区别;设置footer是否可以被选中

三、listView的焦点问题

如果向item中添加button,checkBox等等控件的时候,这时我们就需要考虑焦点的问题

当写一个简单的listView,上面如果含有Button,checkBox的时候,点击item不起作用,也就是不能触发onItemClick事件,也就是说listView的焦点被其它控件抢占了。

解决的办法:

方法1、为抢占控件设置android:focusable =  "false"

方法2、item根节点设置android:descendantFocusability = "blocksDescendants",属性值有三种选择

beforeDescendants:这个值表示ViewGroup会优先其子类控件而获取焦点

afterDescendants:这个值表示ViewGroup会当子类的控件不需要获取焦点的时候才获取焦点

blocksDescendants:这个值表示ViewGroup会覆盖子类控件而直接获得焦点

四、listView关于CheckBox的选择错位问题。

方法一、可以放到一个HashMap<Integer, Boolean>中, 每次初始化的时候根据postion取出对应的boolean值,然后再进行checkbox的状态设置;也就是

HashMap<Integer, Boolean> state = new HashMap<Integer,Boolean>();

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                                // TODO Auto-generated method stub
                                if(isChecked)
                                { 
                                       state.put(position, isChecked);
                                }else{
                                     state.remove(position);
                                }
                        }

在getView()方法里面: holder.cbox.setChecked(state.get(position)==null? false : true);

方法二、在entity类中加入了一个boolean值用于判断

五、listView的数据更新(增删改查)

以增加为例调用notifyDataSetChanged()方法

step1:在我们自定义的BaseAdapter中添加一个更新数据的方法:

step2:在activity中设置按钮的监听事件,来增加一条数据

对于更新数据每次调用notifyDataSetChanged(),这个方法实际上会把界面的item都重新绘制一遍,这样会影响UI的性能,如果数据量很大的时候,只要改变其中的一项就要重新绘制所有的额item,显然是不划算的,这时我们自定义下面的方法

android中与Adapter相关的控件----ListView的更多相关文章

  1. android中与Adapter相关的控件----GridView

    GridView(网格视图)讲解 一.GridView(网格视图)这个是控件也是比较多,和listView的很多地方都是一样的,但是GridView可以显示多列,而listView只能显示一列,个人觉 ...

  2. android中与Adapter相关的控件----ViewFlipper

    ViewFlipper(翻转视图) 一.ViewFlipper是一个多页面管理的控件,与ViewPager不同,ViewPager的是一页一页的的,而ViewFlipper则是一层一层的.图片轮播或者 ...

  3. android中与Adapter相关的控件----ExpandableListView

    ExpandableListView(可折叠的列表) 一.ExpandableListView(可折叠的列表)和ListView有很多地方差不多的,使用也差不多,只是他们使用适配器不一样的,Expan ...

  4. android中与Adapter相关的控件----Spinner&AutoCompleteTextView

    Spinner(列表选项框) & AutoCompleteTextView(自动完成文本框) 一.列表选项框核心属性 android:dropDownHorizontalOffset设置列表框 ...

  5. 【转】android中最好的瀑布流控件PinterestLikeAdapterView

    [源地址]http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0919/1696.html 之前我们介绍过一个开源的瀑布流控件Stag ...

  6. 疯狂Android第二章:Adapter以及部分控件使用

    第二章 重点:1.理解View以及各种布局的优缺点,适用场景. 2.熟练掌握adapter原理与用法. 3.熟悉其它控件的基本使用方法. /////////////////////////////// ...

  7. Android中EditText,Button等控件的设置

    EditText可以使用:TextView.setEnabled(true)来设置为可编辑,其实很简单,写在这里以便以后自己查看. Button设置可用性:setVisibility(View.VIS ...

  8. [转]android中最好的瀑布流控件PinterestLikeAdapterView

    PinterestLikeAdapterView 项目地址:https://github.com/GDG-Korea/PinterestLikeAdapterView 使用方法类似于ListView下 ...

  9. 解决Android中,禁止ScrollView内的控件改变之后自动滚动 - 转

    问题: 最近在写一个程序界面,有一个scrollVIew,其中有一段内容是需要在线加载的. 当内容加载完成后,ScrollView中内容的长度会发生改变,这时ScrollView会自动下滚,如下图所示 ...

随机推荐

  1. 自动化运维工具——ansible安装入门(一)

    一.简介 现如今有很多运维自动化的工具,如:Ansible.Puppet.saltStack.Fabric.chef.Cfengine 1. Ansible介绍 Ansible 是由 Cobbler与 ...

  2. SpringBoot AOP综合例子

    完整源码:https://github.com/947133297/cgLibDemo 通过AOP来便捷地输出日志,能更加方便排查系统的bug,这个例子中简单输出自定义文件和函数执行时的参数,函数要不 ...

  3. Spring中注解大全和应用

    @Controller@RestController:@Service@Autowired@RequestMapping@RequestParam@ModelAttribute@Cacheable@C ...

  4. Python基础:条件与循环

    条件语句 除了 boolean 类型的数据,条件判断最好是显性的 if i != 0: ... 而不是只写出变量名: if i: ... For循环与While循环 通常来说,如果你只是遍历一个已知的 ...

  5. [Python]有关pygame库中的flip和update的区别

    pygame.display.flip()和pygame.display.update()的用法上的区别: 资料一.   资料二. (资料最后更新时间:2019年1月9日)

  6. 精通Spring Boot---使用@ControllerAdvice处理异常

    在Spring 3.2中,新增了@ControllerAdvice.@RestControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@Mode ...

  7. Hibernate中1+N问题以及解决方法

    1. Hibernate中的1+N问题描述 在多对一关系中,当我们需要查询多的一方对应的表的记录时,可以用一条sql语句就能完成操作.然而,在多的一方的实体类中的@ManyToOne标注的fetch的 ...

  8. eeeeeeeeeee

    http://58.241.123.38/hot.cdn.baidupcs.com/file/91623e76f776475da9c3223cdac861f0?xcode=68983c005f6e3c ...

  9. java十分钟速懂知识点——NIO

    一.引子 nio是java的IO框架里边十分重要的一部分内容,其最核心的就是提供了非阻塞IO的处理方式,最典型的应用场景就是处理网络连接.很多同学提起nio都能说起一二,但是细究其背后的原理.思想往往 ...

  10. 2612. [FHZOI 2017]被窃的项链

    2612. [FHZOI 2017]被窃的项链 ★★★   输入文件:stolen_necklace.in   输出文件:stolen_necklace.out   简单对比时间限制:1 s   内存 ...