knrt.net
当前位置:首页 >> AnDroiD listviEw ADAptEr 有多个布局时viEw的重用 >>

AnDroiD listviEw ADAptEr 有多个布局时viEw的重用

多个布局,是不是指有多个不同的Item布局?你需要重写getViewTypeCount()和getItemViewType()方法,getView()里根据不同的viewType去判断convertView是否为空,加载不同的布局,设置不同的Tag

如果有几千、几万甚至更多的项时,其中只有可见的项存在于内存中,其它的都在Recycler中,Recycler是Android中专门用来处理缓存的组件. ListView先通过getView()方法请求一个View,然后请求其它可见的View.convertView在getView中是空的(null). 当列表第一项滚出屏幕,并且一个新的项从屏幕低端上来时,ListView会再请求一个View,这时,convertView已经不是空值了,它的值是滚出屏幕的第一项,之后只需设定新的数据,然后返 position, 适配器, public, parent, null

在《TurboChargeYourUI-How to make your AndroidUI fast and efficient》介绍了怎样提高listview的性能,优化了listview的加载速度.这里的item使用的是单一布局,能够实现view的重用和回收,那么多种布局文件的怎么办呢,如果再使用上面的方法,view的重用会出现问题,Android使用的BaseAdapter提供了解决多种布局文件的重用方法.1)重写 getViewTypeCount() 该方法返回多少个不同的布局2)重写 getItemViewType(int) 根据position返回相应的Item

如果布局不是很多的话,可以写在同一个Item中,然后根据不同的情况,在adapter 的getView中对不同布局的显隐性进行变更.从而实现一个listView有多种布局.这个我之前实践过.可行的.希望这个思路能帮到您.

对于listview 的优化,网上已经被讲解过很多,listview的优化一般优化如下几点:(1)item view重用优化(防内存溢出)(2)view查找优化(减少执行时间)(3)滑动优化,在滑动的时候加载图片数据等(防滑动卡顿)以上基本上是对应单

你觉得难的地方应该是怎么把checkbox添加到item上面,其他的点击事件应该比较好实现.带checkox的listview你可以在加载adapter的时候用这个布局android.R.layout.simple_list_item_multiple_choice,这是系统自带的.示例代码:String[] data

convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.XXXX, null); convertView.findViewById(R.id.xxxx) 试试用第一句来获取VIEW. 还有Adapter中如果不用ConvertView来做缓存,很容易出现内存溢出的

根据你的描述:ListView具有多种item布局,建议你看下这篇文章,写的非常好,希望能帮助到你!http://blog.csdn.net/xyz_lmn/article/details/13745489

adapter填充数据的时候,我们一般要实现以下方法:1 public int getCount(){ }2 public Object getItem(int position) {}3 public long getItemId(int position) {}4 public View getView(int position, View view, ViewGroup viewGroup){}但是要实现复用多种

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com