Java 自定义列表视图中的滚动延迟
我的项目是一本学费管理书,在这本书中,我使用自定义的listView列出了所有学生的照片、姓名、ID、活动中的课程,它运行良好,但当添加更多学生时,它显示listView滚动滞后。使用下面的适配器,我在listView中面临滚动滞后。我减小了存储在SQLite数据库中的图像的大小(小于500kb),但它仍然不能正常工作** 适配器代码Java 自定义列表视图中的滚动延迟,java,android,listview,Java,Android,Listview,我的项目是一本学费管理书,在这本书中,我使用自定义的listView列出了所有学生的照片、姓名、ID、活动中的课程,它运行良好,但当添加更多学生时,它显示listView滚动滞后。使用下面的适配器,我在listView中面临滚动滞后。我减小了存储在SQLite数据库中的图像的大小(小于500kb),但它仍然不能正常工作** 适配器代码 公共类MyListAdapter扩展BaseAdapter{ 私人语境; 专用int布局; 私有ArrayList记录列表; 公共MyListAdapter(活动
公共类MyListAdapter扩展BaseAdapter{
私人语境;
专用int布局;
私有ArrayList记录列表;
公共MyListAdapter(活动上下文、int布局、ArrayList记录列表){
this.context=上下文;
这个布局=布局;
this.recordlist=记录列表;
}
@凌驾
public int getCount(){
返回recordlist.size();
}
@凌驾
公共slmodel getItem(内部位置){
返回记录列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
私有类视窗持有者{
图像视图图像视图;
TextView名称、id、sclass;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
ViewHolder=新的ViewHolder();
if(行==null)
{
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
行=充气机。充气(布局,空);
holder.name=row.findViewById(R.id.bname);
holder.id=row.findviewbyd(R.id.sid);
holder.sclass=行findViewById(R.id.SCURSE);
holder.imageView=row.findviewbyd(R.id.imageView);
row.setTag(支架);
}
否则{
holder=(ViewHolder)row.getTag();
}
slmodel model=recordlist.get(位置);
holder.name.setText(model.getName());
holder.id.setText(model.getId().toString());
holder.sclass.setText(model.getsclass());
byte[]recordimgae=model.getImgae();
位图位图=位图工厂.decodeByteArray(recordimgae,0,recordimgae.length);
holder.imageView.setImageBitmap(位图);
返回行;
}
}
欢迎来到SO,祝贺您发布第一个问题
使用图像加载库,如或
使用这些库,您可以:
- 调整图像大小
- 使用缓存减少加载时间
- 自动处理后台线程以加载和转换位图
Glide.with(context)
.load(recordImage)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.imageView);
在.asBitmap()处显示错误//无法解析'RequestBuilder'中的方法'asBitmap',感谢它现在所做的工作……对于位图,它写为->Glide.with(context).asBitmap().load(recordImage).diskCacheStrategy(diskCacheStrategy.ALL).into(holder.imageView)@mihirSharma很好,除此之外,尝试用
RecyclerView
替换您的ListView
。它提高了长列表的性能。
Glide.with(context)
.load(recordImage)
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder.imageView);