setImageResource() - array

  • Antworten:4
Max L.
  • Forum-Beiträge: 325

03.06.2010, 20:36:50 via Website

Hey,

ich beschäftige mich nun auch seit wenigen Tagen mit der Entwicklung für Android. Dabei bin ich gerade auf ein Problem gestoßen, ich möchte einem ImageView über setImageResource ein Bild zuweisen.
Normalerweise würd ich ja zB. folgendes schreiben:
1iv.setImageResource(R.drawable.test1)

Jetzt habe ich aber ein Array, welches "R.drawable.test1" usw. beinhaltet, meine erste Idee war ein String-Array, aber da ja setImageResource eine resID erwartet, geht das ja nicht. Danach wollte ich ein Integer-Array benutzen, das ging auch eigentlich, allerdings bekomm ich die xml-Datei nicht hin, dabei hab ich verschiedene Ansätze ausprobiert:

1<integer-array name="test">
2 <item>drawable.test1</item>
3 <item>drawable.test2</item>
4</integer-array>

1<integer-array name="test">
2 <item>R.drawable.test1</item>
3 <item>R.drawable.test2</item>
4</integer-array>

1<integer-array name="test">
2 <item>@drawable/test1</item>
3 <item>@drawable/test2</item>
4</integer-array>
http://www.anddev.org/viewtopic.php?p=30240

Version 3 zeigt mir zwar keinen Fehler an, aber "drawable" wird rot unterstrichen und die Meldung lautet "@drawable ist not correctly spelled" -> wenn ich die App dann ausführe, werden keine Bilder übernommen.

Wie gesagt, bin noch recht unerfahren, über eine Antwort würde ich mich freuen. :)


1int[] gv_icon = myResources.getIntArray(R.array.gv_icon);
2iv.setImageResource(gv_icon[position]);

Liebe Grüße, Max.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

03.06.2010, 21:19:16 via Website

dein R.drawable ist ein abbild deines drawable ordners

dort hast du zb eine image.png und eine image1.png datei liegen

dann wird fuer dich folgendes generiert

R.drawable.image
R.drawable.image1

damit kannst du nun folgendes machen

setImageRessource(R.drawable.image);

und schon wird dein bild angezeigt

swordiApps Blog - Website

Antworten
Max L.
  • Forum-Beiträge: 325

03.06.2010, 21:24:27 via Website

Markus Gursch
setImageRessource(R.drawable.image);

und schon wird dein bild angezeigt

Ja, das weiß ich ;)

Ursprünglich hab ich eine switch-case Anweisung benutzt, das klappte auch, aber ich würd es gern über ein Array realisieren. (find ich etwas übersichtlicher)

also setImageResource(array[3]) zB.
aber ich weiß nicht, welche Form das (Integer-)Array haben muss.

Bei der Suche bin ich dann auf den folgenden Link gestoßen, aber da werden die Bilder trotzdem nicht angezeigt: http://www.anddev.org/viewtopic.php?p=30240


//Edit: über switch hab ich das so realisiert:

switch (position) {
case 0: setImageResource(R.drawable.test1);
case 1: setImageResource(R.drawable.test2);
case 2: setImageResource(R.drawable.test3);
}

das würde ich gern über ein Array realisieren

— geändert am 03.06.2010, 21:27:29

Liebe Grüße, Max.

Antworten
Gelöschter Account
  • Forum-Beiträge: 48

03.06.2010, 21:32:11 via Website

Hi Max,
du kannst ganz normal Drawables benutzen, die XML-Datei könnte so aussehen:
1<?xml version="1.0" encoding="utf-8"?>
2<resources>
3
4 <array name="images">
5 <item>@drawable/image1</item>
6 </array>
7
8</resources>
Im Code dann mit TypedArray:

1TypedArray images = getResources().obtainTypedArray(R.array.images);
2 view.setImageDrawable(images.getDrawable(0));

images.getDrawable(index) wäre dann der Zugriff!

— geändert am 03.06.2010, 21:32:36

Antworten
Max L.
  • Forum-Beiträge: 325

03.06.2010, 21:38:02 via Website

Sebastian N.
Hi Max,
du kannst ganz normal Drawables benutzen, die XML-Datei könnte so aussehen:
1<?xml version="1.0" encoding="utf-8"?>
2<resources>
3
4 <array name="images">
5 <item>@drawable/image1</item>
6 </array>
7
8</resources>
Im Code dann mit TypedArray:

1TypedArray images = getResources().obtainTypedArray(R.array.images);
2 view.setImageDrawable(images.getDrawable(0));

images.getDrawable(index) wäre dann der Zugriff!

Danke :) das habe ich gesucht und dank dir gefunden. Dann kann es ja jetzt weitergehen :blink:

Liebe Grüße, Max.

Antworten