文档详情

listview实现漂亮的自定义表格实例.doc

发布:2017-07-09约1.46万字共25页下载文档
文本预览下载声明
listview实现漂亮的自定义表格实例 篇一:Android学习笔记二十四之ListView列表视图二 Android学习笔记二十四之ListView列 表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题。 ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次。getView()方法每次调用的时候都会重新inflate一个View出来返回去,但是对于ListView,只需要保留能够显示的最大的View的数目即可,而新的View可以复用消失的View。ListView给我们提供了可复用的View对象,在getView()方法里面,有一个参数View,这个就是可以复用的View对象。当参数View为null的时候,我们需要inflate一个View,当它不为null的时候,我们可以直接将他返回。例如: @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; //view为空的时候,inflate一个新的view if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.item_base_adapter, null);viewHolder = new ViewHolder(); viewHolder.tv_base_adapter = (TextView) view.findViewById(R.id.tv_base_adapter);view.setTag(viewHolder); } else { viewHolder = (ViewHolder) view.getTag(); } viewHolder.tv_base_adapter.setText(datas[i]); //不为空,复用view return view; } ListView优化方法二 上面介绍的是对View复用的优化,这样我们可以不必每一item都inflate一个新的view,可以通过复用,减小内存开销。下面我们介绍一个每一个AndroidAPP中都必不可少的操作,获取控件句柄,简单的说就是拿到id。在ListView中,我们inflate一个View,里面也有需要获取到组件id的,我们可以用ViewHolder来实现优化: 具体的思路就是,我们在ViewHolder中存放我们需要的控件,在View为null的时候,需要inflate一个新的view,同时我们还new一个ViewHolder类的对象,并将findviewById的结果赋值给ViewHolder中对应的成员变量,我们可以调用View中setTag()方法,将 ViewHolder和View绑定起来。当view不为null的时候,通过getTag()方法取出ViewHolder对象,这样就可以获得ViewHolder中的成员变量,也不再需要调用findViewById方法了。例如: @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder; if (view == null) { view = LayoutInflater.from(context).inflate(R.layout.item_base_adapter, null);//view为空,new一个ViewHolder对象 viewHolder = new ViewHolder(); //获取到ViewHolder对象中成员变量的id viewHolder.tv_base_adapter = (TextView) view.findViewById(R.id.tv_base_adapter);//调用setTag方法,将ViewHolder绑定到中 view.setTag(viewHolder); } else { //view不为空,调用getTag方法,取出保存的ViewHolder对象 viewHolder = (ViewHolder) view.getTag
显示全部
相似文档