2017-07-31 10 views
1

これは私のGridView用の私のカスタムアダプタクラスです。レイアウトインフレータを一度呼び出してビューホルダーを使用することで、グリッドスクロールの速度を最適化しようとしましたが、スクロールが非常に遅くなりました。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; 
} 

答えて

1

あなたのコードは正常に動作するはずです。考えられる唯一の原因は、読み込んでいるイメージが非常に大きく、メモリが同時にそれらのすべてを読み込むことができないことです。

小さいサイズで試してみるとよいでしょう。または、Glideを使用してイメージをロードすることもできます。イメージビューのサイズに従ってイメージのサイズが変更されるためです。

1
  1. パフォーマンスを向上させスムーズにスクロールするには、recycleViewを使用してください。
  2. Glideを画像の読み込みに使用します。
関連する問題