Android群英传学习笔记——ListView使用技巧

近日拿到徐宜生老师所著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()方法来刷新界面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值