1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Auf Ressourcen dynamisch zugreifen!

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Manfred, 10.02.2009.

  1. Manfred, 10.02.2009 #1
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    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!
     
    Mike's_Note bedankt sich.
  2. sixi, 10.02.2009 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    Drawable d = (Drawable)findViewById(R.drawable.xxx);

    meinst du so?
     
  3. Manfred, 10.02.2009 #3
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    Ja.............
     
  4. Manfred, 10.02.2009 #4
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    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
     
  5. Manfred, 10.02.2009 #5
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    Funktioniert so! Habe Eclipse und Emulator neu gestartet.....
     
  6. zx128, 10.02.2009 #6
    zx128

    zx128 Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Sieht mir nach einem tierischen Umweg aus.

    Wie wärs mit:

    ?

    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:

    getDrawable:


    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?
     
  7. Manfred, 11.02.2009 #7
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    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);
                    }
                }
     
  8. zx128, 11.02.2009 #8
    zx128

    zx128 Android-Lexikon

    Beiträge:
    1,179
    Erhaltene Danke:
    143
    Registriert seit:
    23.01.2009
    Verstanden. Danke für die Antwort :)
     
  9. friedger, 11.02.2009 #9
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    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...
     
  10. Flixius, 09.08.2012 #10
    Flixius

    Flixius Android-Hilfe.de Mitglied

    Beiträge:
    132
    Erhaltene Danke:
    4
    Registriert seit:
    24.10.2010
    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?
     

Diese Seite empfehlen