Estoy tratando de eliminar los elementos/archivos en una vista de cuadrícula. Los archivos se encuentran en el /data/my-image-folder/
. Los archivos se eliminan de una vez, pero la interfaz de usuario no se actualiza al instante. Aquí está mi código para que:Actualizando la vista de cuadrícula Dinámicamente cuando se elimina un elemento (archivo)
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())));
código 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;
}
aquí es mi código de rejilla Ver adaptador:
ImageAdapter adapter = null; //ImageAdapter extends BaseAdapter
if (fileList != null) {
adapter = new ImageAdapter(this, fileList);
gridView.setAdapter(i);
}
, mientras que después de eliminar si hago:
adapter.notifyDataChanged();
grid.invalidateViews();
c ompiler se queja de que el adpater como el "final", pero si lo hago "final", se queja de que no puedo hacer adaptador final como que no permitirá que la línea de abajo a suceder:
adapter = new ImageAdapter(this, fileList);
Por otra parte yo no podía' t encontrar la aplicación notifyDataChanged .Hay notifyDataSetChanged, notificar, notifyAll y notifyDataSetInvalidated pero sin notifyDataChanged.
Creo que Intent.ACTION_MEDIA_MOUNTED es para todas las imágenes/archivos ubicados en la tarjeta SD externa y no para el sistema de archivos del teléfono. Esto es correcto.
¿Cómo puedo lograrlo. Por favor consejo.
Rgds, Softy
adapter.notifyDataChanged() ;? Lo he visto en la mayoría de las publicaciones SO. ¿Puede definir el adaptador? Tengo este código: gridView.setAdapter (nuevo ImageAdapter (this, fileList)); en algún lugar en rgds superiores - softy –
Raulp
No entiendo exactamente lo que quieres. El adaptador es, de hecho, el enlace entre sus archivos y su vista de cuadrícula, por lo que debe notificar al adaptador cada vez que realice modificaciones en los elementos que se muestran en la vista de cuadrícula. También debe pegar el código relacionado con su adaptador en la publicación. –
Jeremy, actualizó la pregunta y el código de gridview. – Raulp