Sto tentando di eliminare gli elementi/file in una vista a griglia. I file si trovano nello /data/my-image-folder/
. I file vengono eliminati contemporaneamente ma l'interfaccia utente non viene aggiornata all'istante. Ecco il mio codice per questo:Aggiornamento dinamico della vista griglia quando viene eliminato un elemento (file)
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())));
codice 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;
}
Ecco il mio codice per la griglia Visualizza adattatore:
ImageAdapter adapter = null; //ImageAdapter extends BaseAdapter
if (fileList != null) {
adapter = new ImageAdapter(this, fileList);
gridView.setAdapter(i);
}
mentre dopo l'eliminazione se faccio:
adapter.notifyDataChanged();
grid.invalidateViews();
c ompiler lamenta per rendere l'adpater come la "finale", ma se ce la faccio "finale", si lamenta che non posso fare adattatore finale in quanto non permetterà la linea qui sotto per accadere:
adapter = new ImageAdapter(this, fileList);
Inoltre non potevo' t trovare l'attuazione notifyDataChanged .C'è notifyDataSetChanged, notificare, notifyAll e notifyDataSetInvalidated ma nessuno notifyDataChanged.
Penso che Intent.ACTION_MEDIA_MOUNTED sia per tutte le immagini/file che si trovano sulla scheda SD esterna e non per il file system del telefono. È corretto.
Come posso ottenerlo. Consiglio Plz.
Rgds, Softy
adapter.notifyDataChanged() ;? Ho visto questo sulla maggior parte dei post SO. Si può definire l'adattatore. Ho questo codice: gridView.setAdapter (nuovo ImageAdapter (this, fileList)); da qualche parte in cima rgds - softy –
Raulp
Non capisco esattamente quello che vuoi. L'adattatore è infatti il collegamento tra i tuoi file e il tuo gridview, quindi devi notificare l'adattatore ogni volta che fai delle modifiche sugli elementi visualizzati nella griglia. Dovresti incollare anche il codice relativo all'adattatore nel post. –
Jeremy, ha aggiornato la domanda e il codice della griglia. – Raulp