Cours Adapter Personnalisé
Cours Adapter Personnalisé
Cours Adapter Personnalisé
1
LISTVIEW DE PERSONNES
2
LISTVIEW DE PERSONNES
3
LISTVIEW
q Présentation de l’application
Comment procéder ?
Ø Créer la Vue principale contenant la ListView
Ø Créer une classe pour un Item (ici Studient)
Ø Créer l’interface Clickable
Ø MainActivity implémente Clickable (ajouter la/les
méthodes à surcharger)
Ø Créer la vue pour chaque item (ici studient_layout)
Ø Ecrire l’adapter personnalisé qui étend BaseAdapter
Ø Réaliser l’affichage dans MainActivity
Ø Prépare d’une collection à afficher
Ø Crée un Adapter en lui donnant la collection et this pour callback
Ø Adapter la ListView à la collection
Ø Surcharge des méthodes de Clickable
4
CRÉER UNE CLASSE POUR UN ITEM
(ICI STUDIENT)
public class Studient {
private String name;
private float rank;
private int picture;
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ListView d'étudiants"
android:textSize="34sp" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp »/>
</LinearLayout>
6
CRÉER L’INTERFACE CLICKABLE
Le context servira à l’adapter
qui aura besoin de savoir
dans quelle vue
public interface Clickable { (activity_main par exemple)
void onClicItem(int itemIndex); afficher les éléments
Context getContext();
}
Rien n’interdit de
rajouter des
méthodes si besoin
J
7
MAINACTIVITY IMPLÉMENTE CLICKABLE
@Override
public void onClicItem(int itemIndex) {
//for exemple...
Toast.makeText(getApplicationContext(),"item "+itemIndex+" cliqué", Toast.LENGTH_LONG).show();
}
@Override
public Context getContext() {
return getApplicationContext();
} Le context servira à
} l’adapter qui aura besoin de
savoir dans quelle vue
(activity_main par exemple)
afficher les éléments
8
CRÉER LA VUE POUR CHAQUE ITEM
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/picture"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@drawable/rallo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp" <RatingBar
android:gravity="center_horizontal" android:id="@+id/rank"
android:orientation="vertical"> android:layout_width="wrap_content"
android:layout_height="wrap_content"
<TextView android:scaleX="0.5"
android:id="@+id/name" android:scaleY="0.5"
android:layout_width="wrap_content" android:numStars="4"
android:layout_height="wrap_content" android:layout_weight="5" />
android:layout_weight="1" </LinearLayout>
android:textSize="24sp"
android:text="name" /> </LinearLayout>
10
RÉALISER L’AFFICHAGE DANS
MAINACTIVITY
public class MainActivity extends AppCompatActivity implements Clickable{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listview = findViewById(R.id.listView);
12