SlideShare une entreprise Scribd logo
ATELIER 18 : Les bases de
données locales (Sqlite) sous
Android
Soit la base de données Attijaribdd.db avec une seule table Clients pour le moment :
Clients ( id, nom, login, password, datcreation, type).
étape 1 : Interface graphique
1. Créer une application Android appelé AttijariMobile avec comme nom du package
ma.isgi.attijarimobile comportant une activité vide.
2. Déplacer MainActivity.Java dans le package ma.isgi.attijarimobil.controllers.activities qu’il
faut créer.
3. Créer une nouvelle activité vide appelé adminClientsActivity et depuis l’activité
MainActivity prévoir sur click d’un bouton « administrer les clients » d’afficher l’activité
précédente.
4. Doter l’activité adminClientsActivity par l’interface graphique suivante :
Avec :
Widget Texte id
TextView Id _
TextView nom _
TextView login _
TextView password _
RadioButton particulier Id/radioparticulier
RadioButton Entreprise Id/radioentreprise
EditText _ Id/id
EditText _ Id/nom
EditText _ Id/login
EditText _ Id/password
Button Add Id/btnadd
Button Disp Id/btndisp
Button UPD Id/btnupd
Button Del Id/btndel
ListView _ Id/lstclients
étape 2 : Classe de création et manipulation de la base de
données :
3. Créer une classe Client dans ma.isgi.attijarimobile.models ayant la structure suivante :
id : int
nom : string
login : string
password : string
type : int (1 pour les particuliers et 2 pour les entreprises)
datecreation : date
Générer les setters et les getters pour toutes les données membres de la classe
5. Créer une classe Java appelé MyDB dans ma.isgi.attijarimobile.models qui va rassembler
tout le code nécessaire pour la création et la manipulation des données :
public class MyDB extends SQLiteOpenHelper{
public static final String nomDB="bddattijari.db";
public static final int versionDB=1;
public MyDB(Context cnt){
super(cnt,nomDB,null,versionDB);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// supprime la table
db.execSQL("DROP TABLE IF EXISTS clients");
// recrée la table onCreate(db);
}
}
4. Création des tables : Dans la méthode onCreate de la classe MyDB, créer la table clients :
String script = "CREATE TABLE Clients (ID Integer Primary Key, Nom Text, Login Text, password
Text, datecreation Datetime , type Integer) " ;
// Execute script.
db.execSQL(script);
5. Insertion des données dans la table : Créer une méthode AddClient ayant comme corps :
public Boolean AddClient(Client client){
//Activer l’écriture au nouveau de la base de données
SQLiteDatabase db = this.getWritableDatabase();
//Créer un objet ContentValues avec un ensemble de données sous
forme
//clé/valeur.
//ATTENTION : une clé doit avoir le même nom que le champ
//correspondant dans la base
ContentValues contentValues = new ContentValues();
contentValues.put("ID",client.id);
contentValues.put("Nom",client.nom);
contentValues.put("Login",client.login);
contentValues.put("password",client.password);
contentValues.put("datecreation", String.valueOf(new Date()));
contentValues.put("type",String.valueOf(client.type));
long resultat = db.insert("clients",null,contentValues);
return ( (resultat==-1) ? false : true) ;
}
5. Affichage des données de la table : Créer une méthode qui retourne la liste des clients, on la
nomme getAllClients ayant comme corps :
public List<Client> getAllClients(){
List<Client> liste = new ArrayList<Client>();
SQLiteDatabase db = this.getReadableDatabase();
//on crée un curseur sur les données qui correspondent au resultat de
// l’execution de la requéte SQL select * from Clients :
Log.i("listclients","debut affichage");
Cursor cs = db.rawQuery("select * from clients",null);
//on positionne le curseur sur la premiere ligne des données
cs.moveToFirst();
//on boucle sur les lignes de données,tant que le curseur n’est pas encore
// positionné en fin des données
while (cs.isAfterLast()==false){
//ici, on récupére les données suivant leur position
// dans la table et leur format
liste.add(new Client(Integer.parseInt(cs.getString(0)),
cs.getString(1), cs.getString(2),cs.getString(3),null,
Integer.parseInt(cs.getString(5))));//cs.getString(5)));
Log.i("listclients",cs.getString(0)+" "+cs.getString(0));
cs.moveToNext();
}
//On retourne la liste
return liste;
}
6. Mettre à jour les données : On crée une nouvelle méthode qui prendra en paramètres les
nouvelles valeurs qui vont remplacer les anciennes :
public Boolean UpdClient(Client client){
SQLiteDatabase db = this.getWritableDatabase();
// on crée encore un objet de type ContentValues qui va contenir les nouvelles
//valeurs passées en paramètres
ContentValues contentValues = new ContentValues();
contentValues.put("nom",client.nom);
contentValues.put("login",client.login);
contentValues.put("password",client.password);
contentValues.put("type",client.type);
// on exécute la méthode update en fournissant le nom de la table et les valeurs
db.update("clients",contentValues,"id=?",new String[]{String.valueOf(client.id)});
return true;
}
7. Supprimer des données : pour cela, on rajoute une autre méthode DelClients qui prend en
paramétre l’identifiant du client à supprimer :
public Boolean DelClients(int id){
SQLiteDatabase db= this.getWritableDatabase();
int retour = db.delete("client", "id=?",new String[]{String.valueOf(id)});
return (retour ==0) ? false : true ;
}
Etape 3: Programmation événementielle au niveau de la
classe adminClientsActivity.java
8. Créer le layout sur res/layout pour les éléments de la listview pour afficher l’id, le nom et le type de
chaque client dans une liste appelé list_client_item :
<LinearLayout
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"
android:orientation="horizontal">
<TextView
android:id="@+id/id"
android:layout_width="63dp"
android:layout_height="27dp"
android:textAlignment="center"
android:text="TextView" />
<TextView
android:id="@+id/nom"
android:layout_width="126dp"
android:layout_height="26dp"
android:textAlignment="center"
android:text="TextView" />
<TextView
android:id="@+id/typeclient"
android:layout_width="184dp"
android:textAlignment="center"
android:layout_height="25dp"
android:text="TextView" />
</LinearLayout>
9. Créer une classe adapter pour alimenter la listview par des instances de la classe client, retournées
par la méthode getAllclients de la classe MyDB.
public class ClientListAdapter extends BaseAdapter {
private List<Client> listData;
private LayoutInflater layoutInflater;
private Context context;
public ClientListAdapter(Context aContext, List<Client> listData)
{
this.context = aContext;
this.listData = listData;
layoutInflater = LayoutInflater.from(aContext);
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup
parent) {
VuePorteur porteur;
if (convertView == null) {
convertView =
layoutInflater.inflate(R.layout.list_client_item, null);
porteur = new VuePorteur();
porteur.id = (TextView) convertView.findViewById(R.id.id);
porteur.nom = (TextView)
convertView.findViewById(R.id.nom);
porteur.typeclient = (TextView)
convertView.findViewById(R.id.typeclient);
convertView.setTag(porteur);
} else {
porteur = (VuePorteur) convertView.getTag();
}
Client client = this.listData.get(position);
porteur.id.setText(String.valueOf(client.getId()));
porteur.nom.setText(client.getNom());
porteur.typeclient.setText(String.valueOf(client.getType()));
return convertView;
}
static class VuePorteur {
TextView id;
TextView nom;
TextView typeclient;
}
}
10.
11. Dans la classe adminClientsActivity , récupérer les différents composants graphiques et
créer une instance de la classe MyDB qu’on vient de créer :
MyDB db = new MyDB(this);
ListView lstclients;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnadd = (Button) findViewById(R.id.btnajouter);
Button bntsupprimer = (Button) findViewById(R.id.bntsupprimer);
Button btnmodifier = (Button) findViewById(R.id.btnmodifier);
Button btnafficher = (Button) findViewById(R.id.btnafficher);
EditText id = (EditText) findViewById(R.id.id);
EditText nom = (EditText) findViewById(R.id.nom);
EditText login = (EditText) findViewById(R.id.login);
EditText password = (EditText) findViewById(R.id.password);
RadioButton typeparticulier = (RadioButton)
findViewById(R.id.rdBtnParticulier);
RadioButton typeentreprise = (RadioButton)
findViewById(R.id.rdBtnParticulier);
int typeclient=(typeentreprise.isChecked()==true)?1:2;
lstclients = (ListView) findViewById(R.id.lstclients);
List<Client> clients=db.getAllClients();
lstclients.setAdapter(new ClientListAdapter(this, clients));
}
9. Au niveau du bouton Ajouter, ajouter le code qui exécute la méthode AddClient
10. Pour l’affichage, développer le code qui affiche tous les clients dans la listview
11. Ajouter le code qui permettent de supprimer et de modifier un client
12. Dans Res/Drawable ajouter les fichiers ressources suivants pour décorer les éléments de la
listview
Item_state_normal.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#f1f1f2"
android:centerColor="#e7e7e8"
android:endColor="#cfcfcf"
android:angle="270" />
</shape>
Item_state_pressed
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#18d7e5"
android:centerColor="#16cedb"
android:endColor="#09adb9"
android:angle="270" />
</shape>
Item_state_selected
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#F39A7E"
android:centerColor="#FB5C2A"
android:endColor="#D13504"
android:angle="270" />
</shape>
item_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/item_state_normal" />
<item android:state_pressed="true"
android:drawable="@drawable/item_state_pressed" />
<item android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/item_state_selected" />
</selector>
Etape4 : Développement d’une page d’authentification
13. Modifier l’interface de l’activité principale MainActivity pour avoir le desig suivant :
Cette activité principale devra permettre au client d’Attijari de se connecter à l’application
moyennant une authentification selon les données de chaque client stockées dans la base de
donnée locale.
Le client qui réussi à se connecter devra accéder à son espace Client qui contiendra une activité
appelée EspaceClientActiivity.
14. Créer un système de menu au niveau de cette activité comportant les options suivantes :
▪ Consulter le compte
▪ Effectuer un versement
▪ Mes cartes
▪ Déposer une réclamation
Un menu particulier doit être prévu sur la barre de l’application appelé paramétrage pour
donner la possibilité au client de paramétrer ses données. Les options du menu flottant qui
représentent les services offerts par la banque à ses client peuvent être enrichis au fur et à
mesure du développement de l’application et de l’avancement du cours.

Contenu connexe

Similaire à Atelier18

Crystal Report avec Microsoft Visual Studio 2010
Crystal Report avec Microsoft Visual Studio 2010Crystal Report avec Microsoft Visual Studio 2010
Crystal Report avec Microsoft Visual Studio 2010
Wiki Info Systeme
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
FethiBenYahia1
 
Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013
Philippe Sfeir
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques android
Amir Souissi
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPress
IZZA Samir
 
Softshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décorSoftshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décor
michaelmiguel2013
 
Softshake apiness l'envers du décor
Softshake apiness l'envers du décorSoftshake apiness l'envers du décor
Softshake apiness l'envers du décor
ApinessSA
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
Mathias Seguy
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
Lilia Sfaxi
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
hashiramasenju65
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
DNG Consulting
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
Lilia Sfaxi
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
salmachtioui1
 
Jquery - introduction au langage
Jquery - introduction au langageJquery - introduction au langage
Jquery - introduction au langage
StrasWeb
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
Cellenza
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScript
Raphaël Semeteys
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Thibault Martinez
 

Similaire à Atelier18 (20)

Crystal Report avec Microsoft Visual Studio 2010
Crystal Report avec Microsoft Visual Studio 2010Crystal Report avec Microsoft Visual Studio 2010
Crystal Report avec Microsoft Visual Studio 2010
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013Tableau de bord Yammer sous SharePoint 2013
Tableau de bord Yammer sous SharePoint 2013
 
Chapitre 2 elements graphiques android
Chapitre 2   elements graphiques androidChapitre 2   elements graphiques android
Chapitre 2 elements graphiques android
 
Atelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPressAtelier WordPress: Création d&rsquo;extension WordPress
Atelier WordPress: Création d&rsquo;extension WordPress
 
Softshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décorSoftshake 2013 Apiness SA l'envers du décor
Softshake 2013 Apiness SA l'envers du décor
 
Softshake apiness l'envers du décor
Softshake apiness l'envers du décorSoftshake apiness l'envers du décor
Softshake apiness l'envers du décor
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
chapitre 1 Android 2.pptx
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 
Jquery - introduction au langage
Jquery - introduction au langageJquery - introduction au langage
Jquery - introduction au langage
 
ASP.NET from Zero to Hero
ASP.NET from Zero to HeroASP.NET from Zero to Hero
ASP.NET from Zero to Hero
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScript
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 

Atelier18

  • 1. ATELIER 18 : Les bases de données locales (Sqlite) sous Android Soit la base de données Attijaribdd.db avec une seule table Clients pour le moment : Clients ( id, nom, login, password, datcreation, type). étape 1 : Interface graphique 1. Créer une application Android appelé AttijariMobile avec comme nom du package ma.isgi.attijarimobile comportant une activité vide. 2. Déplacer MainActivity.Java dans le package ma.isgi.attijarimobil.controllers.activities qu’il faut créer. 3. Créer une nouvelle activité vide appelé adminClientsActivity et depuis l’activité MainActivity prévoir sur click d’un bouton « administrer les clients » d’afficher l’activité précédente. 4. Doter l’activité adminClientsActivity par l’interface graphique suivante :
  • 2. Avec : Widget Texte id TextView Id _ TextView nom _ TextView login _ TextView password _ RadioButton particulier Id/radioparticulier RadioButton Entreprise Id/radioentreprise EditText _ Id/id EditText _ Id/nom EditText _ Id/login EditText _ Id/password Button Add Id/btnadd Button Disp Id/btndisp Button UPD Id/btnupd Button Del Id/btndel ListView _ Id/lstclients
  • 3. étape 2 : Classe de création et manipulation de la base de données : 3. Créer une classe Client dans ma.isgi.attijarimobile.models ayant la structure suivante : id : int nom : string login : string password : string type : int (1 pour les particuliers et 2 pour les entreprises) datecreation : date Générer les setters et les getters pour toutes les données membres de la classe 5. Créer une classe Java appelé MyDB dans ma.isgi.attijarimobile.models qui va rassembler tout le code nécessaire pour la création et la manipulation des données : public class MyDB extends SQLiteOpenHelper{ public static final String nomDB="bddattijari.db"; public static final int versionDB=1; public MyDB(Context cnt){ super(cnt,nomDB,null,versionDB); } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // supprime la table db.execSQL("DROP TABLE IF EXISTS clients"); // recrée la table onCreate(db); } } 4. Création des tables : Dans la méthode onCreate de la classe MyDB, créer la table clients :
  • 4. String script = "CREATE TABLE Clients (ID Integer Primary Key, Nom Text, Login Text, password Text, datecreation Datetime , type Integer) " ; // Execute script. db.execSQL(script); 5. Insertion des données dans la table : Créer une méthode AddClient ayant comme corps : public Boolean AddClient(Client client){ //Activer l’écriture au nouveau de la base de données SQLiteDatabase db = this.getWritableDatabase(); //Créer un objet ContentValues avec un ensemble de données sous forme //clé/valeur. //ATTENTION : une clé doit avoir le même nom que le champ //correspondant dans la base ContentValues contentValues = new ContentValues(); contentValues.put("ID",client.id); contentValues.put("Nom",client.nom); contentValues.put("Login",client.login); contentValues.put("password",client.password); contentValues.put("datecreation", String.valueOf(new Date())); contentValues.put("type",String.valueOf(client.type)); long resultat = db.insert("clients",null,contentValues); return ( (resultat==-1) ? false : true) ; } 5. Affichage des données de la table : Créer une méthode qui retourne la liste des clients, on la nomme getAllClients ayant comme corps : public List<Client> getAllClients(){ List<Client> liste = new ArrayList<Client>(); SQLiteDatabase db = this.getReadableDatabase(); //on crée un curseur sur les données qui correspondent au resultat de // l’execution de la requéte SQL select * from Clients : Log.i("listclients","debut affichage"); Cursor cs = db.rawQuery("select * from clients",null); //on positionne le curseur sur la premiere ligne des données cs.moveToFirst(); //on boucle sur les lignes de données,tant que le curseur n’est pas encore // positionné en fin des données
  • 5. while (cs.isAfterLast()==false){ //ici, on récupére les données suivant leur position // dans la table et leur format liste.add(new Client(Integer.parseInt(cs.getString(0)), cs.getString(1), cs.getString(2),cs.getString(3),null, Integer.parseInt(cs.getString(5))));//cs.getString(5))); Log.i("listclients",cs.getString(0)+" "+cs.getString(0)); cs.moveToNext(); } //On retourne la liste return liste; } 6. Mettre à jour les données : On crée une nouvelle méthode qui prendra en paramètres les nouvelles valeurs qui vont remplacer les anciennes : public Boolean UpdClient(Client client){ SQLiteDatabase db = this.getWritableDatabase(); // on crée encore un objet de type ContentValues qui va contenir les nouvelles //valeurs passées en paramètres ContentValues contentValues = new ContentValues(); contentValues.put("nom",client.nom); contentValues.put("login",client.login); contentValues.put("password",client.password); contentValues.put("type",client.type); // on exécute la méthode update en fournissant le nom de la table et les valeurs db.update("clients",contentValues,"id=?",new String[]{String.valueOf(client.id)}); return true; }
  • 6. 7. Supprimer des données : pour cela, on rajoute une autre méthode DelClients qui prend en paramétre l’identifiant du client à supprimer : public Boolean DelClients(int id){ SQLiteDatabase db= this.getWritableDatabase(); int retour = db.delete("client", "id=?",new String[]{String.valueOf(id)}); return (retour ==0) ? false : true ; } Etape 3: Programmation événementielle au niveau de la classe adminClientsActivity.java 8. Créer le layout sur res/layout pour les éléments de la listview pour afficher l’id, le nom et le type de chaque client dans une liste appelé list_client_item : <LinearLayout 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" android:orientation="horizontal"> <TextView android:id="@+id/id" android:layout_width="63dp" android:layout_height="27dp" android:textAlignment="center" android:text="TextView" /> <TextView android:id="@+id/nom" android:layout_width="126dp" android:layout_height="26dp" android:textAlignment="center" android:text="TextView" /> <TextView android:id="@+id/typeclient"
  • 7. android:layout_width="184dp" android:textAlignment="center" android:layout_height="25dp" android:text="TextView" /> </LinearLayout> 9. Créer une classe adapter pour alimenter la listview par des instances de la classe client, retournées par la méthode getAllclients de la classe MyDB. public class ClientListAdapter extends BaseAdapter { private List<Client> listData; private LayoutInflater layoutInflater; private Context context; public ClientListAdapter(Context aContext, List<Client> listData) { this.context = aContext; this.listData = listData; layoutInflater = LayoutInflater.from(aContext); } @Override public int getCount() { return listData.size(); } @Override public Object getItem(int position) { return listData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { VuePorteur porteur; if (convertView == null) { convertView = layoutInflater.inflate(R.layout.list_client_item, null); porteur = new VuePorteur(); porteur.id = (TextView) convertView.findViewById(R.id.id); porteur.nom = (TextView) convertView.findViewById(R.id.nom); porteur.typeclient = (TextView) convertView.findViewById(R.id.typeclient); convertView.setTag(porteur); } else {
  • 8. porteur = (VuePorteur) convertView.getTag(); } Client client = this.listData.get(position); porteur.id.setText(String.valueOf(client.getId())); porteur.nom.setText(client.getNom()); porteur.typeclient.setText(String.valueOf(client.getType())); return convertView; } static class VuePorteur { TextView id; TextView nom; TextView typeclient; } } 10. 11. Dans la classe adminClientsActivity , récupérer les différents composants graphiques et créer une instance de la classe MyDB qu’on vient de créer : MyDB db = new MyDB(this); ListView lstclients; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnadd = (Button) findViewById(R.id.btnajouter); Button bntsupprimer = (Button) findViewById(R.id.bntsupprimer); Button btnmodifier = (Button) findViewById(R.id.btnmodifier); Button btnafficher = (Button) findViewById(R.id.btnafficher); EditText id = (EditText) findViewById(R.id.id); EditText nom = (EditText) findViewById(R.id.nom); EditText login = (EditText) findViewById(R.id.login); EditText password = (EditText) findViewById(R.id.password); RadioButton typeparticulier = (RadioButton) findViewById(R.id.rdBtnParticulier); RadioButton typeentreprise = (RadioButton) findViewById(R.id.rdBtnParticulier); int typeclient=(typeentreprise.isChecked()==true)?1:2; lstclients = (ListView) findViewById(R.id.lstclients); List<Client> clients=db.getAllClients(); lstclients.setAdapter(new ClientListAdapter(this, clients)); } 9. Au niveau du bouton Ajouter, ajouter le code qui exécute la méthode AddClient
  • 9. 10. Pour l’affichage, développer le code qui affiche tous les clients dans la listview 11. Ajouter le code qui permettent de supprimer et de modifier un client 12. Dans Res/Drawable ajouter les fichiers ressources suivants pour décorer les éléments de la listview Item_state_normal.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#f1f1f2" android:centerColor="#e7e7e8" android:endColor="#cfcfcf" android:angle="270" /> </shape> Item_state_pressed <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#18d7e5" android:centerColor="#16cedb" android:endColor="#09adb9" android:angle="270" /> </shape> Item_state_selected <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#F39A7E" android:centerColor="#FB5C2A" android:endColor="#D13504" android:angle="270" /> </shape> item_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">
  • 10. <item android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/item_state_normal" /> <item android:state_pressed="true" android:drawable="@drawable/item_state_pressed" /> <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/item_state_selected" /> </selector> Etape4 : Développement d’une page d’authentification 13. Modifier l’interface de l’activité principale MainActivity pour avoir le desig suivant : Cette activité principale devra permettre au client d’Attijari de se connecter à l’application moyennant une authentification selon les données de chaque client stockées dans la base de donnée locale.
  • 11. Le client qui réussi à se connecter devra accéder à son espace Client qui contiendra une activité appelée EspaceClientActiivity. 14. Créer un système de menu au niveau de cette activité comportant les options suivantes : ▪ Consulter le compte ▪ Effectuer un versement ▪ Mes cartes ▪ Déposer une réclamation Un menu particulier doit être prévu sur la barre de l’application appelé paramétrage pour donner la possibilité au client de paramétrer ses données. Les options du menu flottant qui représentent les services offerts par la banque à ses client peuvent être enrichis au fur et à mesure du développement de l’application et de l’avancement du cours.