我的项目是一本学费管理书在这我列出了所有学生的照片,姓名,身份证,在活动类使用自定义listview它运行良好,但当添加更多的学生它显示在listview滚动滞后。使用下面的适配器,我在listview中面临滚动延迟。我缩小了存储在sqlite数据库中的图像的大小(小于500kb),但仍然不能顺利工作**
适配器代码
public class MyListAdapter extends BaseAdapter {
private Context context;
private int layout;
private ArrayList<slmodel> recordlist;
public MyListAdapter(Activity context, int layout, ArrayList<slmodel> recordlist) {
this.context = context;
this.layout= layout;
this.recordlist = recordlist;
}
@Override
public int getCount() {
return recordlist.size();
}
@Override
public slmodel getItem(int position) {
return recordlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private class ViewHolder{
ImageView imageView;
TextView name,id, sclass;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row=convertView;
ViewHolder holder=new ViewHolder();
if(row==null)
{
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row=inflater.inflate(layout,null);
holder.name=row.findViewById(R.id.bname);
holder.id=row.findViewById(R.id.sid);
holder.sclass =row.findViewById(R.id.scourse);
holder.imageView=row.findViewById(R.id.imageView);
row.setTag(holder);
}
else{
holder=(ViewHolder)row.getTag();
}
slmodel model=recordlist.get(position);
holder.name.setText(model.getName());
holder.id.setText(model.getId().toString());
holder.sclass.setText(model.getsclass());
byte[] recordimgae=model.getImgae();
Bitmap bitmap= BitmapFactory.decodeByteArray(recordimgae,0,recordimgae.length);
holder.imageView.setImageBitmap(bitmap);
return row;
}
}
1条答案
按热度按时间laik7k3q1#
欢迎来到so,并祝贺您发布第一个问题。
使用图像加载库,如毕加索或滑翔
使用这些库,您可以:
调整图像大小
使用缓存减少加载时间
自动处理后台线程以加载和转换位图。
滑动样品: