2012-04-08 8 views
0

Ich werde das einfach halten. Ich möchte ein ImageView in einem AlertDialog auf ein Bild in einem Array von Drawables setzen. Das Bild, das ich auf ImageView setzen möchte, kann durch Zugriff auf die mImages [Position] abgerufen werden.Set Bildansicht von Array-Referenz?

Hier ist eine kurze Erklärung (vollständige Erklärung unten): In Kurz brauche ich einen Weg, um ein Bild von meiner Haupttätigkeit zu einem Dialog auf dann dismiss und auf den Dialog Abbrechen passieren bestätigen setzt das System Tapete (auf die Bild von der Hauptaktivität übergeben) dann finish(); die Aktivität.

Hier ist eine vollständige Erklärung:

Der Benutzer mit einem Gallery und einem ImageView über die Gallery präsentiert wird, die eine größere Vorschau des Bildes zeigt, die in den Gallery Fokus hat.

Die angezeigten Bilder im Gallery sind Setup mit:

 // setup wallpaper array 
private void findWallpapers() { 
    mThumbs = new ArrayList<Integer>(24); 
    mImages = new ArrayList<Integer>(24); 

    final Resources resources = getResources(); 
    final String packageName = getApplication().getPackageName(); 

    addWallpapers(resources, packageName, R.array.wallpapers); 
} 

// setup array defining all wallpapers & define thumbnails 
private void addWallpapers(Resources resources, String packageName, int list) { 
    final String[] extras = resources.getStringArray(list); 
    for (String extra : extras) { 
     int res = resources.getIdentifier(extra, "drawable", packageName); 
     if (res != 0) { 
      final int thumbRes = resources.getIdentifier(extra + "_small", 
        "drawable", packageName); 

      if (thumbRes != 0) { 
       mThumbs.add(thumbRes); 
       mImages.add(res); 
      } 
     } 
    } 
} 

Nach „Wallpaper Set“ Button gedrückt wird, ein AlertDialog sollte mit einer anderen Vorschau des Bildes öffnen, die in den Gallery konzentrieren mußten. Die AlertDialog enthält eine TextView mit Anweisungen, die Vorschau des Bildes, das wir als Hintergrundbild festlegen möchten, ein "Okay" Button und ein "Abbrechen" Button. Drücken Sie auf "Okay" Button wird das Bild aus der ImageView Vorschau als System Hintergrundbild über eine InputStream.

Danke nochmal!

+0

sind Sie immer noch vor dem Problem –

+0

Ja, die erste Lösung hat das Problem nicht gelöst. Ich werde meine Frage bearbeiten, um mein Problem besser zu erklären. – user1291949

Antwort

0

Sie können den Layout-Inflator verwenden, um das Dialogfeld des Alarmdialogs aufzublasen und dem Dialogfeld Ansicht des Alarms in Ihrer Hauptaktivität zuzuordnen. Sie können findViewById() verwenden, um die onClickListeners-Listener für diese Schaltflächen festzulegen. Dadurch wird sichergestellt, dass Ihr onClickListener mImages sehen kann.

final ArrayList<Integer> mImages=new ArrayList<Integer>(); 
final ImageView v=findViewById(R.id.imageView); 

AlertDialog d=new AlertDialog.Builder(Main.this).create(); 
d.setView(getLayoutInflater().inflate(R.layout.dialogView,findViewById(R.id.ROOT_LAYOUT_IN_XML_ID),false)); 

((ImageView)d.findViewById(R.id.YOUR_VIEW_ID)).setImageResource(mImages.get(?)); 

((Button)d.findViewById(R.id.cancelButton)).setOnClickListener(new OnClickListener() 
{ 
    d.dismiss(); 
}); 
((Button)d.findViewById(R.id.acceptButton)).setOnClickListener(new OnClickListener() 
{ 
    v.setImageResource(mImages.get(?)); 
    d.dismiss(); 
}); 
+0

schlagen Sie vor, ich benutze den Alarmdialog Builder gegen einen komplett benutzerdefinierten? Nur neugierig, ob das einen Unterschied macht. Vielen Dank! Akzeptierte Antwort. – user1291949

+0

Wenn Ihnen Werkzeuge präsentiert werden, warum nicht benutzt? Also, ja, ich schlage das vor. Herzlich willkommen! – teh1

+0

das hat mein Problem nicht gelöst. inflate akzeptiert nicht (int, alertDialog, boolean). Ich denke, dass Sie meine Frage auch falsch verstanden haben. Ich werde es bearbeiten, um besser zu erklären – user1291949