由於每一个项目都会有一个新的View,当项目增加时,View也会越来越多导致效能低落。
藉由设计一个新类别来储存View中的所有元件,并以画面中可呈现的数量产生View实体,将资讯进行替换,以实现重复利用。
由於View是由Adapter产生,所以ViewHolder会设计在Adapter内。
将滚动後产生的新View视为冗余,只要把即将离开清单元件的View作为下一个即将进入清单元件的View的容器,并将内容替换,必免产生新的View,这样的设计称为「画面复用」。
建立一个ViewHolder类别,里面存放画面的元件
private class ViewHolder(v: View){
//连结画面中的元件
val img_photo = v.findViewById<ImageView>(R.id.img_photo)
val tv_msg = v.findViewById<TextView>(R.id.tv_msg)
}
改写getView()方法
override fun getView(position: Int,convertView: View?,parent: ViewGroup): View{
val view: View
val holder: ViewHolder
if (convertView == null){
//依据传入Layout建立画面
view = View.inflate(parent.context, layout, null)
holder = ViewHolder(view)
//为View加上标签以重复使用
view.tag = holder
} else {
holder = convertView.tag as ViewHolder
view = convertView
}
//回传此项目的画面
return view
}
字串处理感觉满多东西可以讲的,这次就讲讲我平时会用到的一些简易功能好了: 字串的大小写处理 pyth...
自从到了美国之後,原本预期要来好好开发海外市场的,果然事情没有这麽顺利,既有客户所遇到的 Bug 跟...
分散式系统是解决网际网路业务承载量问题的基本方法,服务器的记忆体、硬碟故障、服务器之间的网路线路故障...
前言 Hi, 我是鱼板伯爵身为一个软件工程师,我们最常见的问题就是变动的需求。而程序码变更,就会有机...
现在我们手上有了武器(css基本语法),只是刚创建角色拿到的新手包里面那种,所以在打怪前记得先来补充...