有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Baseadapter滚动速度慢且滞后

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

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
}

共 (1) 个答案

  1. # 1 楼答案

    如果非要我猜的话,这句话就是你问题的原因: holder.img!!.setImageResource(item.picc!!)

    因为您有性能问题,所以应该使用像GlidePicasso这样的映像加载程序,而不是直接调用setImageResource。位图/绘图表的大小可能会严重降低滚动性能,除非它们非常小,因为它们没有缓存,并且将以1:1的大小而不是目标ImageView的大小进行解码。但是,如果没有看到更多的代码/映像资产,就无法判断这是否是您的实际性能问题