您的位置:首页 > 移动开发 > Android开发

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()方法来刷新界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: