Probleme mit dem ImageGetter

R

ralle2312

Neues Mitglied
0
Hallo ,

ich habe in meiner Datenbank bilder per html in den Text mit eingefügt, ein Bild bekomme ich hin anzeigen zu lassen, nur wie mache ich das wenn ich mehrer haben ?

Hier mein Code

Code:
ImageGetter imgGetter = new ImageGetter() {

        public Drawable getDrawable(String source) {
                Drawable drawable = null;
                
                // Unterscheidung Bilder - geht noch nicht
                
                /*
                if (source.equals("ph_leer.png")) {
                    id_bild = R.drawable.ph_leer;
                }
                else if (source.equals("aktu.png")) {
                    id_bild = R.drawable.aktu;
                }
                else {
                    return null;
                }
                */
                Log.d("Exception thrown"," "+id_bild);
                
                try {

                        drawable = getResources().getDrawable(R.drawable.ph_leer);
                        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
                                        .getIntrinsicHeight());

                        
                 
                } catch (Exception e) {
                        e.printStackTrace();
                        Log.d("Exception thrown",e.getMessage());
                } 
                return drawable;
        }
    };
 
Ich versteh dein Problem nicht.
Oben machst du eine Unterscheidung zwischen verschiedenen Bildern, aber unten lädst du immer das gleiche bild
drawable = getResources().getDrawable(id_bild);
läd dir das bild das du oben in id_bild gespeichert hast.

Ansonsten erklär bitte nochmal genauer was du möchtest und was du wo wie gespeichert hast.
 
Hi,

wie du ja sicher gesehen hast ist der obere Bereich aus kommentiert, da es kein Ergebnis gebracht hat.

In diesem Part

Code:
 drawable = getResources().getDrawable(R.drawable.ph_leer);
                        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
                                        .getIntrinsicHeight());

rufe ich ph_leer auf , wenn es im html text enthalten ist, nun möchte ich aber da ich nicht nur ein Bild im html text habe, es sind verschiede Text aus der Datenbank diese auch anzeigen lassen ohne unnötige schleifen machen zu müssen. Hoffe ihr versteht was ich meine

Grüße Ralf
 
Die Auskommentierung hab ich übersehen.

Wenn ich dich richtig verstehe ist deine Variante mit den ifs eigentlich die richtige.
was steht denn in source drin?
Steht da noch mehr drin als nur der Name vom Bild?

Wenn ja funktioniert das mit equals natürlich nicht.
Dann musst du mit source.contains() arbeiten.

Und dann funktioniert das doch.

Du könntest natürlich auch, wenn source doch nur den bildnamen enthält (oder du ih aus dem source herausbekommst)

Hiermit:
Android: How do I get string from resources using its name? - Stack Overflow

Arbeiten (guck dir die 2. beste Antwort an.)
Dann brauchst du nicht so viele ifs und kannst quasi direkt mit dem namen den du bekommst die entsprechende ResourceId laden.
 
HI

in der Source die aus der SQL datenbank kommt steht folgendes
Code:
 Der PH-Wert 13 ist .........<br><br>
 <center><img src="ph_leer.png" alt="PH-Wert"></center>

In der Datenbank sind ca. 320 Datensätze , wobei ca 200 mit img tag sind

Grüße Ralf
 
ja dann kann ein equals ja nicht funktionieren.
Entweder versuchst du es mit der contains() variante, oder du gehst hin und musst source erst mal mit einem html parser parsen (was schwierig wird bei dem unkompletten html-code)
Aber
if (source.contains("ph_leer.png")) {
id_bild = R.drawable.ph_leer;
}
sollte sollte eigentlich funktionieren
 
Hi,

bei meinem code oben den ich wie folgt aufrufe

Code:
txt_frage.setText(Html.fromHtml(Q.getFrage(), imgGetter, null));

wie das eine Bild auch angezeigt, muss ich jetzt echt hergehen und für die anderen ca 200 schleifen machen.

Grüße
 
Entweder das oder du liest nochmal das was ich weiter oben geschrieben hab.
Android: How do I get string from resources using its name? - Stack Overflow
Code:
private String getStringResourceByName(String aString) {
      String packageName = getPackageName();
      int resId = getResources().getIdentifier(aString, null, packageName);
      return getString(resId);
    }


Und dein Bild holst du dann mit:
drawable = getResources().getDrawable(getStringResourceByName("ph_leer"));

Das geht natürlich nur, wenn die Bilder die in source stehen den gleichen namen haben wie in deiner App UND du vorher aus dem String nur den Bildnamen rausgeholt hast.

z.B. mit einer passenden Methode:

Code:
    public static String getImageFromSource(String source) {
         String imgStart = "<img src=\"";
         int start =  source.indexOf(imgStart) + imgStart.length();
         int end = source.indexOf('"', start);         
         
         return source.substring(start, end - 4 );
    }

Diese Methode holt dir aus deinem source string den Inhalt des ersten img tags.

drawable = getResources().getDrawable(getStringResourceByName(getImageFromSource(source)));

Das sollte so eigentlich funktionieren, hab das jetzt aber nicht getestet.

Allerdings ist das soweit ich das gelesen hab nicht besonders effektiv, aber auf die schnelle is mir keine bessere lösung eingefallen.
 
Hi,

alles klar ich hab es über eine separate Klasse gelöst, danke für deine Hilfe

Grüße Ralf
 

Ähnliche Themen

S
Antworten
4
Aufrufe
993
Sempervivum
S
R
Antworten
3
Aufrufe
1.618
Ritartet
R
B
Antworten
4
Aufrufe
486
bb321
B
Zurück
Oben Unten