Ich generiere dynamisch einen String aus der Datenbank, der den gleichen Namen wie das Bild im drawable
Ordner hat.
Jetzt möchte ich diesen Wert für ImageView
die setImageDrawable(R.id.StringGenerated)
dynamische Verwendung festlegen .
Irgendwelche Vorschläge..
android
android-widget
Arun
quelle
quelle
Antworten:
Versuche dies,
Dadurch wird die ID des Zeichens zurückgegeben, auf das Sie zugreifen möchten. Anschließend können Sie das Bild in der Bildansicht wie folgt festlegen
quelle
oder
quelle
Ich persönlich bevorzuge diese Methode
setImageResource()
.quelle
Die von der Ressource zu zeichnenden Namen werden nicht als Zeichenfolgen gespeichert, daher müssen Sie die Zeichenfolge in die während des Builds generierte Ganzzahlkonstante auflösen. Sie können die
Resources
Klasse verwenden, um die Zeichenfolge in diese Ganzzahl aufzulösen.Dadurch wird Ihre generierte Zeichenfolge in die Ganzzahl aufgelöst, mit der
ImageView
das richtige Bild geladen werden kann.Alternativ können Sie die ID verwenden, um das
Drawable
Bild manuell zu laden, und dann das Bild mithilfe dieser Zeichenfunktion anstelle der Ressourcen-ID festlegen.quelle
So einfach wie diese Antwort:
quelle
Dies funktioniert zumindest in der Android API 15
Sie könnten setImageResource () verwenden, aber die Dokumentation gibt an, dass "Bitmap im UI-Thread gelesen und dekodiert wird, was zu einem Latenz-Schluckauf führen kann ... erwägen Sie die Verwendung von setImageDrawable () oder setImageBitmap ()." wie von chetto angegeben
quelle
Alle Antworten gelten heute nicht mehr. Zum Beispiel ist getDrawable () veraltet. Hier ist eine aktualisierte Antwort, Prost!
Aus dokumentierter Methode
quelle
Sie können versuchen, diesen Code zu verwenden:
quelle
Wenn Sie ein solches Ressourcenobjekt in einer Klasse, die keine Aktivität ist, nicht abrufen können, müssen Sie beispielsweise die Methode getContext () für getResources () hinzufügen
quelle
imageView.setImageDrawable(getResources().getDrawable(R.drawable.my_drawable));
quelle
Sie können auch Folgendes verwenden:
imageView.setImageDrawable(ActivityCompat.getDrawable(getContext(), R.drawable.generatedID));
oder mit Picasso:
Picasso.with(getContext()).load(R.drawable.generatedId).into(imageView);
quelle
Ich hatte das gleiche Problem wie Sie und habe Folgendes getan, um es zu lösen:
quelle
Erstellen Sie eine POJO.java-Klasse und erstellen Sie "Konstruktor-, Getter- und Setter-Methoden".
Richten Sie dann die Adapter über Bildzeichnungsressourcen in CustomAdapter.java ein
Übergeben Sie dann die Referenzen über ActivityClass.java
quelle
Ein Stück meines Projekts, alles funktioniert! )
quelle
btnImg.SetImageDrawable (GetDrawable (Resource.Drawable.button_round_green));
API 23 Android 6.0
quelle
Die 'R'-Datei kann nicht zur Laufzeit der App generiert werden. Sie können auch andere Alternativen verwenden, z. B.
if-else
oderswitch-case
quelle
R
erneut zu generieren