Android04_ListView_消息框_多国语言_帧动画_适配器_SQLite数据库_主题和样式.docVIP

Android04_ListView_消息框_多国语言_帧动画_适配器_SQLite数据库_主题和样式.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android04_ListView_消息框_多国语言_帧动画_适配器_SQLite数据库_主题和样式

错误调试,由下至上,找CausedBy(然后并没有找到) 里面出现的java异常,在这个异常下面找自己的类中出现的问题,双击可以打开对应的位置 在上一篇笔记中,引入了ListView控件 但是在使用的时候,ListView控件里拖动太快就容易导致内存溢出(条目足够多的情况下)不断拖动,就会不断创建对象,然而垃圾回收器这个时候如果还没有进行回收的话,就一样会导致程序内存溢出,然后崩溃. ListView中getView方法的四个参数 Int Position 当前View控件的条目数 View covertView 一个用来复用的View 编写代码的时候,就可以通过复用View来避免不断创建对象,这样就不会内存溢出了,而是一直在使用被回收的View public View getView(int position, View convertView, ViewGroup parent) { TextView tv =null; if(convertView==null){ tv = new TextView(MainActivity.this); }else{ tv = (TextView) convertView; } tv.setText(students.get(position).toString()); return tv; } 2,采用打气筒创建view对象 2.1原因:原来的样式不好看,要更好看的样式.如果直接通过代码创建一个控件,再创建子控件,设置背景颜色,图片,文字等等,这样的话比较麻烦(其实就是懒,个人感觉挺好创建的,不过对代码要更熟悉一点),所以google提供了一个api来引用外部的xml样式文件来达到这一效果. 创建的xml文件相当于一个气球,使用打气筒View.inflate(context,resource(资源文件),root(代表气球所处的位置,通常为null))(把一个 xml文件转换成View对象)就可以用了. 注意:在匿名内部类中使用findViewById()的时候,使用的可能是MainActivity里面的方法(它获取到的id在它对应的xml文件中),而不是前面使用inlate获得的view对象对应的xml文件,所以获得的id对象可能不一样 inflate转换的view 对象,底层也是用的pull解析,所有的布局文件都是通过转换成view对象,add到页面之上的. 2.2 因为这个listView很重要,所以重复一遍步骤 ①,在布局xml文件中声明listView控件 ②,在java 代码中找到ListView并且创建适配器 ③,getCount()来确定listView中条目的数量 ④,getView()返回某个位置显示的view对象 ⑤View.inflate()打气筒可以把xml文件转换成view去显示 android:layout_marginLeft属性,距离左边一个控件的距离 2.3 其它事项:①添加一个图标显示删除按钮 ②删除之后会跳到第0条记录,因为每次调用显示功能都相当于创建了一个新的适配器,所以会回到最开始的位置; 解决方案: 不能使用匿名内部类去做显示功能,要单独提取出来,创建一个类去实现BaseAdapter类) //通知数据适配器更新数据,而不是new出来新的适配器(创建一个适配器,判断它是否为空) 使用adapter.notifyDataSetChanged(),底层会先调用getCount方法, ListView.setSelection(条目数)设置对应的条目显示位置 ③通过在onCreate方法中直接定义条目的点击删除方法 Listview.setOnItemClickListener() 条目点击事件(是整个条目,而不是单个控件) Listview.setOnItemLongClickListenter()长按条目触发的事件 mov平滑啥的,没记住 ④封装ListView中的控件,面向Holder编程(未封装前每次创建convertView都会加载一次控件,通过封装控件来提高效率,节约控件)(找时间做) convertView.setTag(obj)可以储存对象(这个对象里封装控件) getTag()可以获得对象,(记得要强转,但是多个对象被储存了该怎么取出来?怎么判断) //作用,当第一次使用的时候,就把对象创建出来,当convertView被重复使用的时候,就不用重复创建子控件对象 3,消息框 3.1 创建一个对话框,谷歌采用了工厂类的设计模式 AlertDialog.Builder builder = new Builder(this); //设置消息框

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档