Comment définir ImageViews source dynamiquement à partir de ArrayList<String> avec Drawable nom de l'image?

J'ai une ListView avec une ImageView, un TextView et un autre ImageView dans chaque ligne.

Le code ci-dessous est le code xml de ma ListView ligne:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#FFF">
<ImageView
android:id="@+id/left"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:src="@drawable/ic_default"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1"
android:textSize="16sp" />
<ImageView
android:id="@+id/right"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:src="@drawable/ic_cena_play"
android:layout_marginRight="0dp"
android:layout_marginLeft="10dp"
android:clickable="true"
android:background="@drawable/mybuttonplay" />
</LinearLayout>

J'ai une ArrayList < String > avec les noms d'un drawable je veux mettre dans le premier ImageView de lignes. Je veux changer le ImageViews source "ic_default" à ceux qui en ont le nom dans la liste de tableaux, dinamically.

Dans mon Activité, à l'intérieur de onCreate(), je suis en utilisant un Adaptateur, comme le code ci-dessous:

ArrayList<String> items = new ArrayList();
items.add("Star");
items.add("Moon");
items.add("Dog");
items.add("Bird");
items.add("Tree");
ArrayList<String> itemsimg = new ArrayList();
itemsimg.add("ic_star");
itemsimg.add("ic_moon");
itemsimg.add("ic_dog");
itemsimg.add("ic_bird");
itemsimg.add("ic_tree");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.scenesrow, R.id.text, items) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row =  super.getView(position, convertView, parent);
            ImageView left = (ImageView) row.findViewById(R.id.left);
            //here I want to change the resource
            //Like if I had a function called getRosourceId(). DOES IT EXIST?!
            int x = getResourceId( itemsimg.get(position) );
            left.setImageResource(x);
            View right = row.findViewById(R.id.right);
            right.setTag(position);
            right.setOnClickListener(ScenesActivity.this);
            return row;
        }
    };

Mis à jour

Merci pour les réponses! Maintenant, je peux changer l'ImageView source dinamically (mais pas encore de l'ArrayList < String >). Le setImageResource() la méthode n'était pas disponible avant parce que j'avais un point de Vue. Avec la fonte de ImageView vous tous suggéré, une grande partie du problème était ok. Mais les réponses ne couvre pas les dinamically chose de "nom de la ressource".

Le dernier problème est maintenant la gauche.setImageResource(resId); méthode demande un ID de Ressource, et j'ai une Chaîne de caractères. Comment faire?

Et désolé, autre code de la version eu quelques erreurs. Maintenant, il est fixé. Je pense que le dernier problème est clair maintenant.

  • Je pense que créer des classe pojo(getter/Setter de la méthode) et de créer la coutume adaptateur vous devez changer l'image facilement à l'aide Personnalisée et de classe pojo
  • parce que vous êtes à l'aide de View au lieu de ImageView, voir ma réponse à faire votre travail