BaseAdapterを拡張したカスタムImageAdapterクラスを使用して配置されたグリッドビューがあります。 イメージは、SDカード内の特定のフォルダから動的にロードされます。私はそれらのpostition(1.png、2.pngなど)に従って画像に名前を付けました。グリッド項目にはOnClickListener
を設定しました。画像と同じ名前のオーディオファイルがSDカードから再生されます。Android gridview:多数の画像を表示しているときにエラーが発生しました
画像の枚数が少なく、画面に合っているとうまく動作します。
数字が大きく、画像が画面に収まらない場合、画面を下にスクロールして表示される次の行のセットは、ほとんどの場合、対応する位置の画像ではなく最初の数行からの画像の繰り返しです。
Iは、アダプタクラスのgetView()
機能のみ、下方にスクロールしながら、時にはさらに位置も
ために適切に呼び出されていない、その画面上に表示され、画像に対して最初に呼び出されることlogcatから見つけます画像全体が再配置されます。 多数の画像を適切に表示するために、グリッドビューの基本的な実装と異なるものを実行する必要がありますか?私が世話しなければならないことは何かありますか?
EDIT - CODE
私はこれが
@Override
public int getCount() {
// fileNames is a string array containing the image file names : 1.png, 2.png etc
return fileNames.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
// I did not use this function
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View v;
if(convertView==null) {
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.grid_image, null);
ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
String bitmapFileName = fileNames[position];
Bitmap bmp =(Bitmap)BitmapFactory.decodeFile(dir.getPath() + "/" + bitmapFileName);a
iv.setImageBitmap(bmp);
}
else {
v = convertView;
}
return v;
}
画像アダプタクラスです
tabGrid[i].setAdapter(new ImageAdapter(this,i));
を使用して、各タブを設定していgetItem()
とgetItemId()
機能は重要ですか?ディレクトリとファイル名はすべて有効です。
何か問題が起きる可能性があることを確認するためにコードを投稿する可能性はありますか? :) – Gregory
@Gregory:\t それを見ていただきありがとうございます。私はコードを追加しました。qnが長すぎるため、最初のコードを追加しました。 –