南京学思XSuperNest使用addHeaderView注意事项

在做学思钢板管理系统的项目中用到了addHeaderView,现在把注意事项记下来
1、item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button、imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发。解决方法是在初始化item的时候屏蔽掉其内部button等控件的焦点获取,具体方法可以在自定义item的根控件中调用:
[java] view plaincopy
setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
这样就能阻塞字控件抢夺焦点,listview的onitemclick就能被正确触发,同时对item内部的button等控件也没有影响,他们在被点击时照样可以触发自身的点击事件。
2、当listview需要添加headerview时,可以通过调用listview的addHeaderView(headView, null, false) 方法,该方法还有一个重载方法 addHeaderView(headView);这两个方法的区别是前一个方法可以控制header是否可以被selected,如果不想被selected则将第三个参数设置成false;
3、接着上面说的添加header,添加header时调用的addHeaderView方法必须放在listview.setadapter前面,意思很明确就是如果想给listview添加头部则必须在给其绑定adapter前添加,否则会报错。原因是当我们在调用setAdapter方法时会android会判断当前listview是否已经添加header,如果已经添加则会生成一个新的tempadapter,这个新的tempadapter包含我们设置的adapter所有内容以及listview的header和footer。所以当我们在给listview添加了header后在程序中调用listview.getadapter时返回的是tempadapter而不是我们通过setadapter传进去的adapter。如果没有设置adapter则tempadapter与我们自己的adapter是一样的。listview.getadapter().getcount()方法返回值会比我们预期的要大,原因是添加了header。
4、接着上面的tempadapter说,我们自定义adapter里面的getitem方法里面返回的position是不包括header的,是我们自定义adapter中数据position编号从0开始,也就是说与我们传进去的list的位置是一样的。
[java] view plaincopy
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("adapter", "position:"+position); //这个position就是我们数据的真实位置
}
而listview的onitemclick方法中:
[java] view plaincopy
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)

arg2是当前click的位置,这个位置是指在tempadapter中的位置,从0开始如果listview中添加了header则0代表header。

时间: 2024-08-01 14:57:04

南京学思XSuperNest使用addHeaderView注意事项的相关文章

XSuperNEST——成本小管家

如果要用一句话来贴切地形容当前工程机械行业的尴尬形势的话,那应该是"理想很丰满,现实很骨感". 在过去的十年,工程机械行业是中国增长最快的装备制造行业之一."大跃进"式的发展速度,使得一批本土企业迅速崛起,已能与国际顶级企业一较高下,品牌也具备了全球范围的影响,比如三一重工,中联重科,徐工等:而中小型企业也在这个产业里奋力拼搏.产业是如此的繁荣,以至于仅从中国市场就能感受到全球工程机械的冷暖.在大规模基本建设的刺激下,工程机械似乎表现出了一种"不败神话&q

关于XSuperMES项目使用的AChartEngine图表引擎

 很多时候项目中我们需要对一些统计数据进行绘制表格,更多直观查看报表分析 结果.基本有以下几种方法: 1:可以进行android  api进行draw这样的话,效率比较低 2:使用开源绘表引擎,这样效率比较高.下面就介绍一种. AChartEngine(简称ACE)是Google的一个开源图表库(for Android).它功能 强大,支持散点图.折线图.饼图.气泡图.柱状图.短棒图.仪表图等多种图 表. 下面我参与的南京学思信息技术有限责任公司为哈尔滨电机厂有限责任公司开发的"下料中心生产

XSuperMES

众所周知,降本增效是每个企业所追求的长远目标,在如何实现降本增效这一目标上相信每个企业都会花费相当大的人力物力财力. 就下料车间管理这一块来说,如何制定和维护企业的切割生产计划,以计算机信息化管理手段提升企业现代化切割生产的管理水平,提高切割生产效率和板材利用率,有效控制生产成本,对实现降本增效有着深远意义.好在我们有XSuperMES SuperMES是南京学思信息技术自主研发的顶级下料车间管理软件.已经使用这一系统的均为行业内的领军者,如:柳工股份及中船重工武汉船用机械厂.XSuperMES

PDA和PAD的区别何在?

南京学思巧妙的运用工业PDA与自制软件相结合的使用方式进行钢板管理.那么工业PDA和我们所使用的PAD有什么区别呢?PDA指的是掌上电脑,可以帮助我们完成在移动中工作,学习,娱乐等.其范围较大.按使用来分类,分为工业级PDA和消费品PDA.工业级PDA主要应用在工业领域,常见的有条码扫描器.rfid读写器.POS机等都可以称作PDA:消费品PDA包括的比较多,智能手机.平板电脑.手持的游戏机等. PAD指的是平板电脑,是一种小型.方便携带的个人电脑,以触摸屏作为基本的输入设备.其范围较小.其代表

反编译工具分享

在我做南京学思XSuperMES时,反编译可以帮助我们学习别人架构等一些技术,这对我们在学习的过程中有 一定的帮助,现把反编译所用到的工具分享给大家,感谢学思.三个工具:网站code.google.com1.apktool,反编译获取xml文件,读取应用程序的资源信息.2.dex2.jar,把dex 文件转化为 jar 文件 .3.jd-gui.exe 把 .class.jar 转化 java 文件. apktool: 命令行到apktool目录:apktool d [apk文件] [反编译后的

android listview addHeaderView和addFooterView的注意事项

1. item内如果有button等控件时,在监听listview的onitemclick事件时,焦点会被item内的button. imagebutton等控件抢走,从而导致在listview设置了onitemclick事件后不会被触发.解决方法是在初始化item的时候屏蔽掉 其内部button等控件的焦点获取,具体方法可以在自定义item的根控件中调用: [java] view plaincopy setDescendantFocusability(ViewGroup.FOCUS_BLOCK

android重写listview使用addHeaderView和addFooterView注意事项

1.添加addHeaderView或addFooterView 对listview添加headerView或footerView时,可以选择addHeaderView(headView)或addHeaderView(headView, null, false),注意后者第三个参数boolean isSelectable,对于listview中设置onItemClick事件,需要将isSelectable设为false,从而保证点击APP出现异常 2.Item中包含按钮或点击控件 如果listvi

json格式转数组注意事项

今天遇到一个特别奇葩的问题,json格式明明是正确的,转数组时却就是出不来,后来才发现是文件的编码问题,文件的编码一定要是utf-8无BOM格式,这点一定要切记!切记! 如果想确认json是否正确:http://www.kjson.com/ json格式的城市: <?php $json = '{ "北京": { "key": 11, "defaultvalue": 1, "values": { "东城区&quo

Android listview addHeaderView 和 addFooterView 详解

addHeaderView()方法:主要是向listView的头部添加布局 addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加,而不能直接添加父容器中的子控件.例如:从一个xml布局文件中添加一个button控件, 只能将整个布局xml文件添加进去.而不能单单只添加button控件. 当添加头部和底部布局还有另外一个重载方法就是addHeaderView(headView, null, false) 和addFooter