Android ListView 多样式Item的一个注意点:(
闲来无事,在写一个多样式Item的ListView的Demo时,遇到了一个以前没遇过的问题;
╮( ̄▽ ̄")╭
我们知道,ListView里可以有多种样式的item,
实现只需要重写:
@Override
public int getItemViewType(int position) {
int type = Integer.parseInt(mData.get(position).get(KEY_TYPE));
switch (type) {
case TYPE_HEADER:
return TYPE_HEADER; case TYPE_CONTENT:
return TYPE_CONTENT;
}
return super.getItemViewType(position);
} @Override
public int getViewTypeCount() {
return 2;
}
然后在getView()方法中做一些item的Type判断,做不同操作即可;
一切都那么美好;
---------------------------------------------------
然而,在我写这个Demo的时候发现,并不能随意给ItemViewType定义int值;
如:
public static final int TYPE_HEADER = 9;
public static final int TYPE_CONTENT = 1;
就会在随后的ListView使用时造成崩溃;
因为ListView会把不同的ItemViewType放进一个有序容器中,
而且这个容器的大小就是getViewTypeCount()方法返回的值,这里是2;
当复用TYPE_HEADER时,就会去取容器中的第9个元素,
然后:
java.lang.IndexOutOfBoundsException
没想到啊,这个居然是相关的;
而且Exception的printStackTrace()所显示的信息,都是sdk的类,简直难找问题源头;
---------------------------------------------------
所以,必须从0开始依次定义ItemViewType的值;
如:
public static final int TYPE_HEADER = 0;
public static final int TYPE_CONTENT_TEXT = 1;
public static final int TYPE_CONTENT_IMAGE = 2;
public static final int TYPE_FOOTER = 3;
(ಥ _ ಥ)
Android ListView 多样式Item的一个注意点:(的更多相关文章
- android listview中item通过viewpager实现《IT蓝豹》
android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...
- Android ListView的item背景色设置以及item点击无响应等相关问题
Android ListView的item背景色设置以及item点击无响应等相关问题 在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的ite ...
- Android listview的item设定高度
在item的layout文件中,用android:layout_height设置item的高度.运行,高度设置无效. 解决办法: 给item设定minHeight,即可. -------------- ...
- Android ListView中Item点击事件失效解决方案
欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...
- Android ListView子item高度定长固定值无效问题
在项目开发中遇到一个实际问题:ListView中,打算给每个子item设定一个具体的高度值如128dp,256dp,在子item中把根布局的高度值写死写成定长,但是不管怎么样,高度一直都没变化.开始以 ...
- Android ListView的item背景色设置
1.如何改变item的背景色和按下颜色 listview默认情况下,item的背景色是黑色,在用户点击时是黄色的.如果需要修改为自定义的背景颜色,一般情况下有三种方法: 1)设置listSelecto ...
- [转]Android ListView的Item高亮显示的办法
本文转自:http://www.cnblogs.com/dyllove98/archive/2013/07/31/3228601.html 在我们使用ListView的时候,经常会遇到某一项(Item ...
- Android ListView的item点击无响应的解决方法
假设listitem里面包含button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最经常使用的解决的方法 是在listitem的布局文件里设置des ...
- android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。
转载请声明出处(http://www.cnblogs.com/linguanh/) 先上张效果图: 1,思路简述 这个肯定是要重写 baseAdapter的了,这里我分了两个数据适配器,一个是自定义的 ...
随机推荐
- Oracle 11g密码过期问题解决方案
[问题描述]近日,使用sqlplus登陆短消息Oracle(Oracle培训 )数据库时提示“ORA-28000: 帐号被锁定”.[原因/触发因素]确定是由于oracle11g中默认在default概 ...
- php curl用法
curl 是使用URL语法的传送文件工具,支持FTP.FTPS.HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP.curl 支持SSL证书.HTTP POS ...
- 改变CSS世界纵横规则的writing-mode属性
改变CSS世界纵横规则的writing-mode属性 这篇文章发布于 2016年04月27日,星期三,23:12,归类于 css相关. 阅读 8292 次, 今日 71 次 by zhangxinxu ...
- RMAN 备份及策略
更详细信息请转http://blog.chinaunix.net/uid-21187846-id-3017363.html 天,这里修改为15天:这样比较保险,到时候恢复时也可以找到当时的备份元数据: ...
- Swift 03.Dictionary
字典 key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来.Swift的所有基础类型(例如String.Int.Double和Bool)默认都是可哈希的,这些类型都能够用作字典 ...
- 在windows 10中使用pip安装psutil 4.3.0
环境版本:windows + python 2.7/3.5共存 使用的python是使用exe安装的,默认已经有pip并确保PATH设置正确,默认安装psutil 4.3.0 1:使用cmd安装2.7 ...
- Handle机制的原理
Android提供了Handle和Looper来满足线程间的通信.Handle先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(Message Exchange). 1.Looper: ...
- Java期末设计(十三周)
一.项目完成计划 十三周和十四周完成用户交互界面的设计(1.登陆界面2.订票以及查询界面3.用户管理界面4.退票界面): 十三周完成登陆界面,十四周完成订票以及查询界面,用户管理界面和 ...
- 模具厂MES项目介绍
开发工具:Microsoft Visual Studio 2012 数据库: Oracle 开发语言:C#(4.0) 版本控制工具:TortoiseSVN 底层ORM框架:IBatisNet ...
- android开发-mvp模式理解
看之前,先忘掉所有,一步步看就行了. 最后会有一个原型demo,当然是转的了.看完文章,再看demo,然后再回头看文章就很好理解了,最好自己写一遍. 1.mvp开发模式可以理解为页面接口编程,每一层的 ...