Baseadapter缓慢且滚动滞后

沙拉夫

我正在尝试使用baseAdapter创建一个列表视图,该列表视图为每个项目(每个项目的图像和文本)显示带有文本视图的ImageView。但是,列表视图滚动太慢且太慢。

class MyListAdapter:BaseAdapter {
var ListLocal = ArrayList<Food>()
var mCtx : Context?=null
constructor(List:ArrayList<Food>,mCtx:Context){
    this.ListLocal = List
    this.mCtx = mCtx
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): 
View {
    var convertView = convertView
    var holder: ViewHolder

    if (convertView == null) {
        holder= ViewHolder()

        var inflator = LayoutInflater.from(mCtx)
        convertView  = inflator.inflate(R.layout.food_type,null)
        holder.title= convertView.findViewById(R.id.txtT)
        holder.img = convertView.findViewById(R.id.PicT)

        convertView.tag = holder
    }
    else {
        holder = convertView.tag as ViewHolder

    }
    val item = ListLocal[position]
    holder.title!!.text = item.txtname
    holder.img!!.setImageResource(item.picc!!)
    return convertView!!

}

override fun getItem(position: Int): Any {
    return ListLocal[position]
}

override fun getItemId(position: Int): Long {
    return position.toLong()
}

override fun getCount(): Int {
    return ListLocal.size
}




 }

internal class ViewHolder {
    var title: TextView? = null
    var img: ImageView? = null
}
埃里克·巴赫伯(Eric Bachhuber)

如果我不得不猜测,这行是导致您出现问题的原因: holder.img!!.setImageResource(item.picc!!)

由于您遇到性能问题,因此应使用GlidePicasso之类的图像加载器,而不是直接调用setImageResource您的位图/可绘制对象的大小会严重降低滚动性能,除非它们很小,因为它们没有被缓存,并且将以1:1大小而不是目标ImageView的大小进行解码。但是,如果不查看更多的代码/图像资产,就无法确定这是否是您的实际性能问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章