Tutoriel android : créer ListView avec des images différentes pour chaque item en utilisant un CustomAdapter

android
custom listview

Un article plus récent sur les custom adapter et les ListView en utilisant le pattern MVC a été ajouté ici : https://houssem-lahiani.blogspot.com/2020/10/creer-une-listview-android-avec-un.html


La vidéo suivante vous permet d'apprendre à utiliser les Custom Adapter, sinon vous pouvez passer directement au code en dessous de la vidéo : 


ListView personnalisé sous Android

Dans ce tutoriel, nous allons vous montrer comment implémenter un ListView personnalisé sous Android avec Images et Texte différents pour chaque item de liste. 

Création du projet avec Android Studio

Tout d'abord vous devez créer un nouveau projet nommé CustomList. Dans ce projet on va afficher une liste avec des items dont chacun contient le nom d'une platforme avec une image.
Après l'avoir créer essayez de télécharger 4 images et essayez de les mettre sous le dossier mipmap.
(apple.png ,win.png, web.png et nous avons déja ic_launcher.png)


Ajout de la ListView dans activity_main.xml   

Vous devez maintenant modifier votre fichier activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.lahiani.houssem.customlist.MainActivity"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout>

Ajout d'un fichier qui représente la forme de l'item (item.xml)

Ajouter ce fichier en cliquant (click droit) sur le dossier layout et choisissez new=>layout ressource file et nommez le item.xml

Mettez ce code dans ce fichier.
<?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="match_parent"> <ImageView android:id="@+id/img" android:layout_width="50dp" android:layout_height="50dp"/> <TextView android:id="@+id/txt" android:layout_marginLeft="20dp" android:textSize="26dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>


Créer l'adapter personnalisé

Créer une nouvelle classe avec le nom de CustomAdapter.java et y mettez ce code :


public class CustomAdapter extends ArrayAdapter<String> { private final Context context; private final String[] platforms; private final Integer[] images; public CustomAdapter(Context context,String[] platforms,Integer[] images)
{ super(context, R.layout.item, platforms); this.context = context; this.platforms = platforms; this.images = images; } @Override public View getView(int position,View view, ViewGroup parent)
{ LayoutInflater inflater = LayoutInflater.from(getContext());
View rowView= inflater.inflate(R.layout.item, parent, true); TextView txtTitle = (TextView) rowView.findViewById(R.id.txt); ImageView imageView = (ImageView) rowView.findViewById(R.id.img); txtTitle.setText(platforms[position]); imageView.setImageResource(images[position]); return rowView; } }

Développez le code de votre activité 


Il reste maintenant de développer le code de MainActivity.java comme suit :
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends AppCompatActivity
{ ListView l; String[] platforms = { "Android", "Ios", "Windows 10", "Web Apps" } ; Integer[] images = { R.mipmap.ic_launcher, R.mipmap.apple, R.mipmap.win, R.mipmap.web }; @Override protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); l=(ListView)findViewById(R.id.list); CustomAdapter adapter=new CustomAdapter(MainActivity.this,platforms,images); l.setAdapter(adapter); } }



Commentaires

  1. Comment modifier ou supprimer un item selectionnee !??

    RépondreSupprimer
    Réponses
    1. Il faut créer un événement sur l'item après le click avec setOnItemClickListener(new AdapterView.OnItemClickListener()
      {
      public void onItemClick(.....)
      {
      //action de suppression ici
      }
      });.

      Supprimer
  2. Comment modifier et supprimer un item selectionnee dans la liste

    RépondreSupprimer

Enregistrer un commentaire

Your comment will be reviewed by moderators

Posts les plus consultés de ce blog

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json

Connexion d'une application Android et une base de données externe Mysql avec web services php Json (opérations CRUD)