自定义listview中的滚动延迟

up9lanfz  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(399)

我的项目是一本学费管理书在这我列出了所有学生的照片,姓名,身份证,在活动类使用自定义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;
    }
}
laik7k3q

laik7k3q1#

欢迎来到so,并祝贺您发布第一个问题。

使用图像加载库,如毕加索或滑翔

使用这些库,您可以:
调整图像大小
使用缓存减少加载时间
自动处理后台线程以加载和转换位图。
滑动样品:

Glide.with(context)
                    .load(recordImage)
                    .asBitmap()
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(holder.imageView);

相关问题