Auf Ressourcen dynamisch zugreifen!

M

Manfred

Fortgeschrittenes Mitglied
14
Hallo!

Ich würde folgendes benötigen:

Wenn ich z.B. auf R.drawable.xxxx zugreifen möchte, will ich das eben dynamisch tun. z.B:

Code:
private void doThis(String [B]xxx[/B])
{
   Drawable x = this.getResources().getDrawable(R.drawable.[B]xxx[/B]);
}
Geht das irgendwie??

Danke!
 
  • Danke
Reaktionen: Mike's_Note
Drawable d = (Drawable)findViewById(R.drawable.xxx);

meinst du so?
 
Ja.............
 
So, hab rausgefunden, dass es so gehen sollte

Code:
int res = this.getResources().getIdentifier("bild1", "drawable", "com.android.applikation");

aber leider bekomm ich nix zurück... naja mal weiterschauen
 
Funktioniert so! Habe Eclipse und Emulator neu gestartet.....
 
Sieht mir nach einem tierischen Umweg aus.

Wie wärs mit:

int res = R.drawable.icon.bild1;

?

Allerdings hab ich ja keine Ahnung, was du da vorhast, vlt. ist dein Weg der einzig richtige.

Also wenn ich z.B. ein String aus dem res haben will, mach ich das so:

String s = getResources().getText(R.string.free_space_text);

getDrawable:

Drawable icon = getResources().getDrawable(android.R.drawable.mein_icon);


UPDATE: Ah, jetzt hab ich verstanden, was du da machst. Muss halt noch mal gucken :)

Jetzt bin ich aber neugierig geworden. Wozu machst du das so? Dieses dynamische Auslesen?
 
Naja bin grad dabei ein Blackjack zu machen! Ich möchte da nicht jede Karte einzeln ansprechen. Die vorhandenen Karten werden in einem Array gespeichert, die den Namen des Files beinhalten.

Das ganze schaut dann so aus:

Code:
            for(int i=0; i<vorhandenBank.length; i++)
            {
                if (vorhandenBank[i] != null)
                {
                    int res = getResources().getIdentifier("com.andriod.blackjack:drawable/"+vorhandenBank[i],null,null );
                    card = getResources().getDrawable(res);
                    card.draw(g);
                }
            }
 
Verstanden. Danke für die Antwort :)
 
Aus Peformanzgründen (=Akku leer) würde ich mir aber die Mühe machen und die Ids in einem Array ablegen, statt Strings zu erzeugen und daraus ids generieren...
 
hi,

mich würde mal interessieren, ob das ganze auch einigermaßen performant ist. bin gerade auf der suche nach einer guten lösung für die folgende aufgabenstellung:

ich lade mir über sqlite einen datensatz. im objekt ist dann eine id, die aussage darüber trifft welcher art der datensatz ist. 1 = Buch, 2 = Handy, 3 = Fussball etc..

wenn ich in der app dann das objekt auf der oberfläche darstellen, will brauche ich eine ID->String zuordnung, damit ich den string statt die id in der app anzeigen kann.

theoretisch könnte ich einfach eine zweite tabelle in sqlite machen und dann über einen join an den string rankommen, aber da ich mehrere sprachen supporten will, würde ich die strings lieber über die entsprechende strings.xml auslesen. sonst müsste ich mir bei jedem query die spracheinstellung des geräts auslesen, was sicherlich nicht nur ziemlich unschön, sondern wahrscheinlich auch unperformant sein wird.

performance spielt für mich eine große rolle, weil meine app schon ziemlich langsam ist.

habt ihr eine idee wie ich mein problem am performantesten lösen kann?
 

Ähnliche Themen

S
Antworten
3
Aufrufe
850
jogimuc
J
M
  • MikelKatzengreis
Antworten
5
Aufrufe
127
swa00
swa00
B
Antworten
4
Aufrufe
487
bb321
B
Zurück
Oben Unten