Android群英传学习笔记——ListView使用技巧
2015-12-06 15:03
465 查看
近日拿到徐宜生老师所著Android群英传,进行学习,故写下此笔记。
1.优化技巧
使用ViewHolder提高效率,ViewHolder方便之处在与减少ListView每次调用getView()方法时通过findViewById()实例化控件.
这里写代码片 public View getView(int position, View convertView, ViewGroup parent){ ViewHolder holder == null; //判断是否缓存 if(convertView == null){ holder = new ViewHolder(); //通过LayoutInflater实例化布局 convertView = mInflater.inflate(R.layout.view,null); holder.img =(ImageView) convertView.findViewById(R.id.imagView); holder.title =(TextViewView) convertView.findViewById(R.id.textView); convertView.setTag(holder); }else{ //通过tag找到缓存的布局 holder = (ViewHolder) convertView.getTag(); } holder.img.setBackgroundResource(R.drawable.ic_launcher); holder.img.setText(mData.get(position)); return convertView; } public final class ViewHolder{ public ImageView img; public TextView title; }
分割线的设置如下
android:divider="@android:color/darker+gray" adnroid:dividerHeight = "10dp"
分割线设置成透明只需将divider设为@null;对ListView隐藏滚动条为
android:scrollbars = “none”
关于取消ListView的点击效果为 android:listSelector =”#00000000”或将其设为“android:color/transparent”
若我们想一开始就显示自定义的ListView相熟,可以使用listView.setSelection(N)来完成,这种方法是瞬间完成的,也可以是用smoothScrollBy(x,y),smoothScrollByOffset(offset),smoothScrollToPositon(index);
至于动态显示listview,传统的方法是通过重新设置ListView的Adapter来更新ListView的显示,要重新获取数据,重新创建了一次ListView,这降低了效率.故我们使用如下代码.
mData.add(“new”);
mAdapter.notifyDataSetChanged();
“`
通过对适配器Adapter的监控,来对ListView动态显示
若想要对子View进行控制,我们可以是用getChildAt方法来进行操作。
通常当我们的listView没有填充数据时,但我们只需通过listView.setEmptyView()来进行对空列表的改善。
对于ListView的滑动监听.可以通过OnTouchListener和OnScrollListener,这其中OnTouchListener会先有消息的优先权
2.ListView的常用拓展
要是ListView到底时能实现弹性的功能,我们需要修改overScrollBy(int deltaX,int deltaY,int scrollX,int scrollY,int scrollRangeX,int ScrollRangeY,int maxOverScrollX,int maxOverScrollY,boolean isTouchEvent)使用super方法改变maxOverScrollY即可。
有时候我们需要用下滑时对标题进行隐藏的ListView,主要是用ObjectAnimator类对标题进行隐藏
类似QQ的聊天ListView,其跟其他的不同之处在于拥有两套布局,因此我们要重写Adapter中的int getItemViewType(),int getViewTypeCount()两种方法,通过写一个基类来控制type的类型,来使其呈现左右两边聊天的布局效果.再通过写一个适配器集成BaseAdapter(),来进行对ListView的更改。
当我们想是用动态改变ListView布局时,我们需要重写一个Adapter让其继承一个BaseAdapter,通过上面所说notifyDataSetChanged()方法来刷新界面
相关文章推荐
- ndk获取Android进程PID和名称
- Android:自适应不同分辨率的字体大小
- android-app manifest(5) - API 23
- Android中自动连接到指定SSID的Wi-Fi
- android横竖屏切换和布局的问题
- android横竖屏切换和布局的问题
- Android数据存储五种方式总结
- Android人脸识别——眼睛是窗口
- Android Rild 概述
- Android 操作系统的内存回收机制
- Android:Theme总结--小白总结
- Android AutoLayout全新的适配方式
- android典型代码系列(三十)------DES加密算法
- android中英文混排
- android典型代码系列(二十八)------通话记录的操作
- android典型代码系列(二十七)------锁屏打开浏览器传数据,解屏最小化浏览器
- android典型代码系列(二十六)------App widget的使用
- android典型代码系列(二十五)------popupwindow的使用
- android典型代码系列(二十四)------获取某个应用程序所占用的内存
- android典型代码系列(二十二)------按键使上面的EditText抖动