Créez d'abord une disposition XML dans le res/layout/main.xml
dossier de votre projet :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/addBtn"
android:text="Add New Item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="addItems"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
/>
</LinearLayout>
Il s'agit d'une disposition simple avec un bouton en haut et une vue de liste en bas. Notez que le ListView
a l'identifiant @android:id/list
qui définit la valeur ListView
par défaut qu'un ListActivity
peut utiliser.
public class ListViewDemo extends ListActivity {
//LIST OF ARRAY STRINGS WHICH WILL SERVE AS LIST ITEMS
ArrayList<String> listItems=new ArrayList<String>();
//DEFINING A STRING ADAPTER WHICH WILL HANDLE THE DATA OF THE LISTVIEW
ArrayAdapter<String> adapter;
//RECORDING HOW MANY TIMES THE BUTTON HAS BEEN CLICKED
int clickCounter=0;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
listItems);
setListAdapter(adapter);
}
//METHOD WHICH WILL HANDLE DYNAMIC INSERTION
public void addItems(View v) {
listItems.add("Clicked : "+clickCounter++);
adapter.notifyDataSetChanged();
}
}
android.R.layout.simple_list_item_1
est la disposition des éléments de liste par défaut fournie par Android, et vous pouvez utiliser cette disposition de stock pour les choses non complexes.
listItems
est une liste qui contient les données affichées dans le ListView. Toute l'insertion et le retrait doivent être effectués listItems
; les changements dans listItems
doivent être reflétés dans la vue. Cela est géré par ArrayAdapter<String> adapter
, qui doit être notifié en utilisant:
adapter.notifyDataSetChanged();
Un adaptateur est instancié avec 3 paramètres: le contexte, qui pourrait être le vôtre activity/listactivity
; la disposition de votre élément de liste individuel; et enfin, la liste, qui est les données réelles à afficher dans la liste.