Generuję dynamicznie ciąg z bazy danych, który ma taką samą nazwę obrazu w drawable
folderze.
Teraz chcę ustawić tę wartość do ImageView
użycia setImageDrawable(R.id.StringGenerated)
dynamicznego.
Jakieś sugestie..
android
android-widget
Bieg
źródło
źródło
Odpowiedzi:
Spróbuj tego,
To zwróci identyfikator elementu do rysowania, do którego chcesz uzyskać dostęp ... następnie możesz ustawić obraz w widoku obrazu, wykonując następujące czynności
źródło
lub
źródło
Osobiście wolę stosować taką metodę
setImageResource()
.źródło
Nazwy zasobów, które można rysować, nie są przechowywane jako ciągi, więc trzeba będzie przekształcić ciąg na stałą całkowitą wygenerowaną podczas kompilacji. Możesz użyć
Resources
klasy, aby zamienić ciąg na tę liczbę całkowitą.Spowoduje to przekształcenie wygenerowanego ciągu na liczbę całkowitą, którą
ImageView
może użyć do załadowania odpowiedniego obrazu.Alternatywnie możesz użyć identyfikatora, aby załadować
Drawable
ręcznie, a następnie ustawić obraz przy użyciu tego elementu do rysowania zamiast identyfikatora zasobu.źródło
Tak prosta jak ta odpowiedź:
źródło
Działa to przynajmniej w Android API 15
Można użyć metody setImageResource (), ale dokumentacja określa, że „czy bitmapa odczytuje i dekoduje w wątku interfejsu użytkownika, co może powodować problemy z opóźnieniem… rozważ użycie metody setImageDrawable () lub setImageBitmap ()”. jak stwierdził chetto
źródło
Wszystkie opublikowane odpowiedzi nie mają zastosowania dzisiaj. Na przykład metoda getDrawable () jest przestarzała. Oto zaktualizowana odpowiedź, zdrowie!
Z udokumentowanej metody
źródło
Możesz spróbować użyć tego kodu:
źródło
Jeśli nie możesz uzyskać takiego obiektu Resources w klasie, która nie jest działaniem, musisz na przykład dodać metodę getContext () do metody getResources ()
źródło
imageView.setImageDrawable(getResources().getDrawable(R.drawable.my_drawable));
źródło
Możesz też użyć czegoś takiego:
imageView.setImageDrawable(ActivityCompat.getDrawable(getContext(), R.drawable.generatedID));
lub używając Picassa:
Picasso.with(getContext()).load(R.drawable.generatedId).into(imageView);
źródło
Miałem ten sam problem co ty i wykonałem następujące czynności, aby go rozwiązać:
źródło
Skonstruuj klasę POJO.java i utwórz „metody konstruktora, pobierającego i ustawiającego”
Następnie skonfiguruj adaptery za pomocą zasobów graficznych do rysowania w pliku CustomAdapter.java
Następnie przekaż odwołania za pośrednictwem ActivityClass.java
źródło
kawałek mojego projektu, wszystko działa! )
źródło
btnImg.SetImageDrawable (GetDrawable (Resource.Drawable.button_round_green));
API 23 Android 6.0
źródło
Pliku „R” nie można wygenerować w czasie wykonywania aplikacji. Możesz użyć innych alternatyw, takich jak użycie
if-else
lubswitch-case
źródło
R
ponownie