アイテム/ファイルをグリッドビューで削除しようとしています。ファイルは/data/my-image-folder/
にあります。ファイルは一度に削除されますが、UIは即座に更新されません。ここ はそのために私のコードです:アイテム(ファイル)が削除されたときにグリッドビューを動的に更新する
imageFilePath = /data/<my-image-folder>/"file.jpg";
File file = new File(imageFilePath);
if (file.exists()) {
boolean deleted = file.delete();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse(imageFilePath+ Environment.getExternalStorageDirectory())));
getViewメソッドコード:ここ
View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from gridlayout.xml
gridView = inflater.inflate(R.layout.gridlayout, null);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(fileList[position]);
System.out.println("value of fileList[position]" + fileList[0]);
// set image
ImageView imageThumbnail = (ImageView) gridView
.findViewById(R.id.grid_item_image);
byte[] imageData = null;
try {
final int THUMBNAIL_SIZE = 64;
FileInputStream fis = new FileInputStream(FILE_PATH
+ fileList[position]);
Bitmap imageBitmap = BitmapFactory.decodeStream(fis);
Float width = new Float(imageBitmap.getWidth());
Float height = new Float(imageBitmap.getHeight());
Float ratio = width/height;
imageBitmap = Bitmap.createScaledBitmap(imageBitmap,
(int) (THUMBNAIL_SIZE * ratio), THUMBNAIL_SIZE,
false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
imageData = baos.toByteArray();
imageThumbnail.setImageBitmap(imageBitmap);
} catch (Exception ex) {
}
} else {
gridView = (View) convertView;
}
return gridView;
}
グリッドビュー・アダプタのための私のコードです:
ImageAdapter adapter = null; //ImageAdapter extends BaseAdapter
if (fileList != null) {
adapter = new ImageAdapter(this, fileList);
gridView.setAdapter(i);
}
ながら、私がしなければ削除後:
adapter.notifyDataChanged();
grid.invalidateViews();
c ompilerは「最終」として特殊なアダプタを作るために文句を言うが、私はそれが「最後の」作る場合、それは以下の行が発生することはできませんとして私は、アダプタの決勝を行いカントと文句を言い:
adapter = new ImageAdapter(this, fileList);
また、私は「couldnトン見つけ実装がをnotifyDataChanged .Thereがががを通知し、をnotifyDataSetChangedされ、とのnotifyAll はをnotifyDataSetInvalidatedが、何のはをnotifyDataChangedません。
私はIntent.ACTION_MEDIA_MOUNTEDは、外部のSDカードにあるすべての画像/ファイルで、正しいファイルシステムではないと思います。
どうすれば実現できますか? Plzアドバイス。
RGDS、 ソフティ
adapter.notifyDataChanged()を参照してください
を行います;?私はこれをほとんどのSO posts.CSanを定義するplzを参照してください。私はこのコードがあります:gridView.setAdapter(new ImageAdapter(this、fileList));どこかの上のrgds - 柔らかい –
Raulp
私はあなたが欲しいものを正確に理解していません。アダプタは実際にはファイルとグリッドビューの間のリンクなので、グリッドビューに表示されている項目を変更するたびにアダプタに通知する必要があります。アダプタに関するコードをポストに貼り付ける必要があります。 –
Jeremy、質問とgridviewコードを更新しました。 – Raulp