Java GridView的滚动速度非常慢

Java GridView的滚动速度非常慢,java,android,android-gridview,layout-inflater,Java,Android,Android Gridview,Layout Inflater,这是我的GridView的自定义适配器类。我曾经试图通过调用布局充气器来优化网格滚动的速度,还使用了视图保持器,但现在滚动速度非常慢 private Context mContext; private final String[] web; private final int[] Imageid; public CustomGrid(Context c, String[] web, int[] Imageid) { mContext = c; this.Imageid = Im

这是我的GridView的自定义适配器类。我曾经试图通过调用布局充气器来优化网格滚动的速度,还使用了视图保持器,但现在滚动速度非常慢

private Context mContext;
private final String[] web;
private final int[] Imageid;

public CustomGrid(Context c, String[] web, int[] Imageid) {
    mContext = c;
    this.Imageid = Imageid;
    this.web = web;
}

class MyViewHolder {
    ImageView imageView;
    TextView textView;

    MyViewHolder(View v) {
        imageView = (ImageView) v.findViewById(R.id.grid_image);
        textView = (TextView) v.findViewById(R.id.grid_text);
    }

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View grid = convertView;
    MyViewHolder viewHolder;

    if (grid == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        grid = inflater.inflate(R.layout.grid_single, null);
        viewHolder = new MyViewHolder(grid);
        grid.setTag(viewHolder);
    } else {
        grid = convertView;
        viewHolder= (MyViewHolder) grid.getTag();
    }
    viewHolder.textView.setText(web[position]);
    viewHolder.imageView.setImageResource(Imageid[position]);
    return grid;
}

我认为你的代码应该可以正常工作。唯一可能的原因是加载的图像太大,内存无法同时加载所有图像

你可能想试试小一点的。或者可以考虑使用图像加载,因为它根据IVIEVIEW的大小调整图像大小。

  • 用于更好的性能和平滑滚动
  • 用于图像加载