Ich mache ein Projekt, in dem Benutzer bis zu 10 Bilder hinzufügen können. Wenn der Benutzer auf "Neues Bild hinzufügen" klickt, wird eine Bildansicht erstellt. Ich habe dies in einer horizontal scrollenden Bildansicht implementiert, so dass der Benutzer horizontal scrollen kann, um die Bilder anzusehen. Wenn Sie auf ein Bild klicken, kann der Benutzer ein Bild von der Kamera oder Galerie hinzufügen. Jetzt ist das Problem immer das Bild wird auf der letzten Bildansicht eingestellt, obwohl ich auf andere Bildansichten geklickt habe. Ich weiß nicht, wie ich das Bild in der ausgewählten Bildansicht einstellen soll.Wie fügt man Image zu ImageView dynamisch hinzu?
Ich habe diese (http://sunil-android.blogspot.in/2013/03/insert-imageview-dynamically-using-java.html) Link für die dynamische Erstellung von Bildansicht in horizontaler Scrollview verwiesen.
Im Anschluss ist mein Code:
On auf die Schaltfläche imageviews klicken, wird dynamisch hinzugefügt werden:
btn_upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addImageView(image_layout);
}
});
Dies ist die addImageView Funktion:
private void addImageView(LinearLayout layout) {
imageView = new ImageView(this);
imageView.setImageResource(R.drawable.gallery);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(220, 220);
imageView.setLayoutParams(layoutParams);
imageView.setPadding(0, 0, 10, 0);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setId(temp);
layout.addView(imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv_id = v.getId();
showDialog(CONTEXT_MENU_ID);
}
});
}
Dies ist der Code Bild von der Kamera oder eine Galerie zur Auswahl:
protected Dialog onCreateDialog(int id) {
if (id == CONTEXT_MENU_ID) {
return iconContextMenu.createMenu();
}
return super.onCreateDialog(id);
}
@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
switch (requestCode) {
case PICK_FROM_CAMERA:
doCrop();
break;
case PICK_FROM_FILE:
mImageCaptureUri = data.getData();
doCrop();
break;
case CROP_FROM_CAMERA:
Bundle extras = data.getExtras();
if (extras != null) {
SelectedImage = extras.getParcelable("data");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SelectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
imageData = baos.toByteArray();
image = Base64.encodeBytes(imageData);
filename = "img_" + System.currentTimeMillis();
imageView.setImageBitmap(SelectedImage); //setting the image
} else {
image = "";
}
File f = new File(mImageCaptureUri.getPath());
if (f.exists())
f.delete();
break;
}
}
private void doCrop() {
final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
int size = list.size();
if (size == 0) {
Toast.makeText(this, "Cannot find image cropping application", Toast.LENGTH_SHORT).show();
return;
} else {
intent.setData(mImageCaptureUri);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, CROP_FROM_CAMERA);
} else {
for (ResolveInfo res : list) {
final CropOption co = new CropOption();
co.title = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo);
co.icon = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo);
co.appIntent = new Intent(intent);
co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
cropOptions.add(co);
}
CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose Crop App");
builder.setAdapter(adapter,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
startActivityForResult(
cropOptions.get(item).appIntent,
CROP_FROM_CAMERA);
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (mImageCaptureUri != null) {
getContentResolver().delete(mImageCaptureUri, null, null);
mImageCaptureUri = null;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
}
zeigen Sie uns den ** CODE **. damit wir dir helfen können. – k0sh
'Ich habe dies in einer horizontal scrollenden Bildansicht implementiert,'. Platzieren Sie in einem ImageView bis zu zehn Bilder? Nein, ich denke, Sie erstellen neue ImageViews. Also bitte klar. – greenapps
'private void addImageView (Layout LinearLayout, String image) {'. Was enthält das String-Bild? – greenapps