Auf Ressourcen dynamisch zugreifen!

M

Manfred

Fortgeschrittenes Mitglied
Threadstarter
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!
 
S

sixi

Fortgeschrittenes Mitglied
Drawable d = (Drawable)findViewById(R.drawable.xxx);

meinst du so?
 
M

Manfred

Fortgeschrittenes Mitglied
Threadstarter
Ja.............
 
M

Manfred

Fortgeschrittenes Mitglied
Threadstarter
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
 
M

Manfred

Fortgeschrittenes Mitglied
Threadstarter
Funktioniert so! Habe Eclipse und Emulator neu gestartet.....
 
zx128

zx128

Experte
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?
 
M

Manfred

Fortgeschrittenes Mitglied
Threadstarter
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);
                }
            }
 
friedger

friedger

Fortgeschrittenes Mitglied
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...
 
F

Flixius

Fortgeschrittenes Mitglied
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?
 
Thread starter Similar threads Forum Replies Date
W Android App Entwicklung 14
Oben Unten