自定义 ListView 中的滚动延迟

时间:2021-04-23 17:25:51

标签: java android listview

我的项目是一本学费管理书,我使用自定义的 listView 在活动中列出了所有学生的照片、姓名、ID、课程,它运行良好,但是当添加更多学生时,它显示列表视图滚动滞后。使用下面的适配器,我在 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 个答案:

答案 0 :(得分:0)

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

使用图像加载库,如 PicassoGlide

使用这些库,您可以:

  • 调整图片大小
  • 使用缓存来减少加载时间
  • 自动处理后台线程以加载和转换位图。

Glide 示例:

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