Ich suche nach Ratschlägen, wie das geht.
Ich möchte eine Aktivität haben, bei der der Benutzer auswählen kannVon der Android-Galerie aus wird das Bild in eine Rasteransicht der Aktivität eingefügt. Ich habe beide erfolgreich getrennt implementiert, aber wenn ich sie kombinieren muss, bin ich ratlos. Grid View tutorial ist Hier. Das Problem ist, dass das Grid-View-Tutorial Bilder von res / drawable verwendet, so dass die URL, die ich aus der Galerie bekomme, nicht genau funktioniert.
Wie sollte ich das Bild in der ImageAdapter-Klasse festlegen? Ich habe versucht, imageView.setImageBitmap (Bitmap) mit der URL-Adresse eines der Bilder in meinem Telefon zu tun, aber es hat nicht funktioniert.
Ich denke über das Erstellen einer ArrayList von String, die URI für die Bilder aus der Galerie enthält. Auf diese Weise kann ich die Bilder hinzufügen, löschen und speichern.
Andere Fragen zusammen damit ist, dass, wenn ich die Bilder angezeigt bekomme, wird es aktualisieren, wenn ich einfach setAdapter wieder aufrufen? würde Arbeit automatisch löschen, wenn ich von der Quelle ArrayList lösche?
Vielen Dank
Das Folgende ist der Code aus der Gitteransicht, den ich bearbeitet habe:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return imageId.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it"s not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Uri targetUri = Uri.parse(tests.get(0));
//tests contains the uri of the photo i"m trying to import from my phone gallery in string form
Bitmap bitmap;
bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(targetUri));
imageView.setImageBitmap(bitmap);
return imageView;
}
}
Antworten:
2 für die Antwort № 1Antwort auf den ersten Teil: Wenn dein Tests enthält den Uri des Bildes, das du ausgewählt hast, einfach benutzen imageView.setImageURI(targetUri)
.
Antwort zum zweiten Teil: Um ein GridView zu aktualisieren, rufen Sie einfach an mGridView.invalidateViews()
und dein gesamter GridView wird neu gezeichnet und somitAlle Änderungen, die in Ihrer Quelle stattgefunden haben, werden hier wiedergegeben. Sie müssen setAdapter () nicht erneut aufrufen. setAdapter () wird nur einmal aufgerufen, wenn Sie das Raster zum ersten Mal zeichnen. Danach invalidateViews () um es zu aktualisieren.