你的位置:首页 > 操作系统

[操作系统]android中与Adapter相关的控件

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中设置按钮的监听事件,来增加一条数据

什么时候去海南旅游最好海南跟团旅游报价多少海南旅游必去的地方是海南旅游必去景点排名海南旅游地图线路大全昌江雷公笋 羌族刺绣 黎族片陶制作技艺概述 羊肚菌 兰卡威全面游玩攻略 马来西亚旅游代表地 去北海道“地狱谷”泡脚 大阪食购玩新体验 从化有什么好吃的? 圣迹苍岩溶洞介绍?连平圣迹苍岩溶洞怎么样? 圣迹苍岩旅游区门票学生半价吗?连平圣迹苍岩有学生票吗? 圣迹苍岩旅游区网上订票?连平圣迹苍岩旅游区自助游攻略? 日本旅游不可错过的七大奇迹 港澳游购物场所及消费次数须注明 我和老妈的圆梦之旅九寨沟 日本旅游攻略 ICS9112AM-26LF Datasheet ICS9112AM-26LF Datasheet IDT72281L10TF Datasheet IDT72281L10TF Datasheet ICS9112AM-26LFT Datasheet ICS9112AM-26LFT Datasheet 港澳出发去梅山岛旅游 港澳出发去梅山岛旅游 港澳出发去梅山岛旅游 港澳出发去美国旅游 港澳出发去美国旅游 港澳出发去美国旅游 港澳出发去美国维京群岛旅游 港澳出发去美国维京群岛旅游 港澳出发去美国维京群岛旅游