Exemple listview complexe :
Voici le code XML Android ListView :
<!-- Id of a list view uniquely identify it-->
<ListView
android:id="@+id/simpleListView" android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
divider: Il s'agit d'un dessin ou d'une couleur à dessiner entre différents éléments de
la liste. Vous trouverez ci-dessous l'exemple de code de séparateur avec explication
incluse, où nous dessinons un séparateur de couleur rouge entre différentes vues
<!--Divider code in ListView-->
<ListView
android:id="@+id/simpleListView" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:divider="#f00"
android:dividerHeight="1dp"
/>
dividerHeight: Ceci spécifie la hauteur du séparateur entre les éléments de la liste.
Cela peut être en dp (pixel de densité), sp (pixel indépendant de l'échelle) ou px
(pixel).
1
4. listSelector: La propriété listSelector est utilisée pour définir le sélecteur de
listView. Il s'agit généralement de couleur orange ou bleu ciel, mais vous pouvez
Également définir votre couleur personnalisée ou une image sous forme de sélecteur
de liste selon votre conception.
Vous trouverez ci-dessous un exemple de code listSelector avec explication, où la
couleur du sélecteur de liste est verte, lorsque vous sélectionnez un élément de liste,
la couleur d'arrière-plan de cet élément est verte.
<!-- List Selector Code in ListView -->
<ListView
android:id="@+id/simpleListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#f00"
android:dividerHeight="1dp"
android:listSelector="#0f0"/>
<!--list selector in green color-->
2
Utilisation des adaptateurs dans ListView :
1. Un adaptateur est un pont entre le composant de l'interface utilisateur et la
source de données qui nous aide à remplir les données dans le composant de
l'interface utilisateur. Il contient les données et les envoie à la vue de
l'adaptateur, puis la vue peut prendre les données de la vue de l'adaptateur et
afficher les données sur différentes vues telles que la vue de liste, la vue de
grille, la fileuse, etc.
2. ListView est une sous-classe de AdapterView et elle peut être remplie en se
liant à un adaptateur, qui récupère les données d'une source externe et crée
une vue qui représente chaque entrée de données.
3. Dans Android, les adaptateurs couramment utilisés sont :
Array Adapter
Base Adapter
Maintenant, nous expliquons ces deux adaptateurs en détail :
1.Array Adapter:
Chaque fois que vous disposez d’une liste d’éléments uniques soutenus par un
tableau, vous pouvez utiliser ArrayAdapter. Par exemple, une liste de
contacts
téléphoniques, de pays ou de noms.
Remarque importante : par défaut, ArrayAdapter attend une mise en page avec
un
seul TextView. Si vous souhaitez utiliser des vues plus complexes, cela signifie plus
de
personnalisation dans les éléments de la liste, veuillez éviter ArrayAdapter et utiliser
3
des adaptateurs personnalisés.
Vous trouverez ci-dessous le code de l'adaptateur:
ArrayAdapteradapter = new ArrayAdapter
<String>(this,R.layout.ListView,R.id.textVi
ew,StringArray
);
Step 1 :
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:orientation="horizontal">
4
<ImageView android:id="@+id/icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_launcher
" />
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="@dimen/activity_horizontal_margin"
android:textColor="@color/black" />
</LinearLayout>
Step 3 : Dans la troisième étape, nous utiliserons un adaptateur personnalisé pour
afficher les noms de pays dans l'interface utilisateur en codant MainActivity.java. Vous
trouverez ci-dessous le code de MainActivity.java
Remarque importante : assurez-vous que les images de drapeau sont stockées dans
un dossier drawble présent dans le dossier res avec un nom correct.
5
package com.abhiandroid.listbaseexample;
import android.app.Activity;
import android.os.Bundle;
import
android.widget.ListView;
public class MainActivity extends Activity {
ListView simpleList;
String countryList[] = {"India", "China", "australia", "Portugle",
"America", "New Zealand"};
int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia,
R.drawabl e.portugle, R.drawable.america, R.drawable.new_zealand};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
simpleList = (ListView) findViewById(R.id.simpleListView);
CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(),
countryLi st, flags);
simpleList.setAdapter(customAdapter);
}
}
6
Exécutez maintenant’application
l dans’émulateur.
l Vous verrez l'écran de sortie
- ci
dessous où la liste des noms de pays sera
imprimée:
2.Base Adapter : BaseAdapter est une classe de base commune d'une
implémentation générale d'un adaptateur qui peut être utilisée dans ListView. Chaque
fois que vous avez besoin d'une liste personnalisée, vous créez votre propre
adaptateur et y étendez l'adaptateur de base. L'adaptateur de base peut être étendu
pour créer un adaptateur personnalisé permettant d'afficher un élément de liste
personnalisé. ArrayAdapter est également une implémentation de BaseAdapter.
Example de list view en utilisant Custom adapter(Base adapter):
Step 4: Créez maintenant un autre adaptateur personnalisé de classe qui étendra
BaseAdapter. Vous trouverez ci-dessous le code de CustomAdapter.java
package com.abhiandroid.listbaseexample;
7
import android.content.Context;
import android.media.Image;
import
android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import
android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.zip.Inflater;
public class CustomAdapter extends BaseAdapter {
Context context;
String countryList[];
int flags[];
LayoutInflater inflter;
public CustomAdapter(Context applicationContext, String[] countryList,
int[] flags
) {
this.context = context;
this.countryList = countryList;
this.flags = flags;
inflter = (LayoutInflater.from(applicationContext));
}
@Override
public int getCount() {
return countryList.length;
}
@Override
public Object getItem(int i) {
return null;
}
8
@Override public long
getItemId(int i) { return
0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
view = inflter.inflate(R.layout.activity_listview, null);
TextView country = (TextView) view.findViewById(R.id.textView);
ImageView icon = (ImageView) view.findViewById(R.id.icon);
country.setText(countryList[i]);
icon.setImageResource(flags[i]);
return view;
}
Output:Exécutez maintenant l’application dans l’émulateur et elle vous montrera le
nom des pays ainsi que les drapeaux. Ci-dessous se trouve l'écran de sortie :