Requêtes Android Parse: Manipuler et Interroger des Données
12 min
requêtes de base sur android introduction dans ce guide, vous effectuerez des requêtes de base dans \<font color="#2166ae">parse\</font> et implémenterez une \<font color="#2166ae">application android\</font> en utilisant ces requêtes vous apprendrez comment configurer et interroger des données réalistes en utilisant \<font color="#2166ae">back4app\</font> et \<font color="#2166ae">android\</font> ce tutoriel utilise une application créée dans android studio 4 1 1 avec \<font color="#2166ae">buildtoolsversion=30 0 2\</font> , \<font color="#2166ae">compile sdk version = 30 0 2\</font> et \<font color="#2166ae">targetsdkversion=30\</font> à tout moment, vous pouvez accéder au projet android complet construit avec ce tutoriel sur nos dépôts github dépôt d'exemple kotlin https //github com/templates back4app/android parse sdk kotlin dépôt d'exemple java https //github com/templates back4app/android parse sdk java objectif notre objectif est d'interroger des données stockées sur \<font color="#2166ae">back4app\</font> depuis une \<font color="#2166ae">application android\</font> voici un aperçu de ce que nous allons réaliser prérequis pour compléter ce tutoriel, nous avons besoin de android studio https //developer android com/studio/index html une application créée sur back4app remarque suivez le tutoriel de nouvelle application parse https //www back4app com/docs/get started/new parse app pour apprendre à créer une application parse sur back4app une application android connectée à back4app remarque suivez le tutoriel d'installation du sdk parse https //www back4app com/docs/android/parse android sdk pour créer un projet android studio connecté à back4app un appareil (ou appareil virtuel https //developer android com/studio/run/managing avds html ) fonctionnant sous android 4 1 (jelly bean) ou version ultérieure commençons! avant les prochaines étapes, nous devons connecter \<font color="#2166ae">back4app\</font> à notre application vous devez sauvegarder le \<font color="#2166ae">appid\</font> et \<font color="#2166ae">clientkey\</font> depuis le \<font color="#2166ae">back4app\</font> dans le fichier \<font color="#2166ae">string xml\</font> et ensuite init \<font color="#2166ae">parse\</font> dans notre \<font color="#2166ae">app java\</font> ou \<font color="#2166ae">app kt\</font> fichier suivez le nouveau tutoriel d'application parse https //www back4app com/docs/android/parse android sdk si vous ne savez pas comment init \<font color="#2166ae">parse\</font> à votre application ou vous pouvez télécharger les projets dont nous avons partagé les liens github ci dessus et modifier uniquement les \<font color="#2166ae">appid\</font> et \<font color="#2166ae">clientkey\</font> parties selon vos besoins 1 comprendre la classe parse query toute opération de requête parse utilise le \<font color="#2166ae">parsequery\</font> type d'objet, qui vous aidera à récupérer des données spécifiques de votre base de données tout au long de votre application il est crucial de savoir qu'un \<font color="#2166ae">parsequery\</font> ne se résoudra qu'après avoir appelé une méthode de récupération (comme \<font color="#2166ae">query findinbackground\</font> ), donc une requête peut être configurée et plusieurs modificateurs peuvent être enchaînés avant d'être réellement appelés pour créer un nouveau \<font color="#2166ae">parsequery\</font> , vous devez passer en paramètre la sous classe parseobject souhaitée, qui est celle qui contiendra les résultats de votre requête un exemple de requête peut être vu ci dessous, dans laquelle une sous classe fictive profile est interrogée 1 // this will create your query 2 parsequery\<parseobject> query = new parsequery<>("profile"); 3 // the query will resolve only after calling this method 4 query findinbackground();1 // this will create your query 2 val query = parsequery\<parseobject>("profile") 3 // the query will resolve only after calling this method 4 query findinbackground() vous pouvez en savoir plus sur la \<font color="#2166ae">parse query\</font> classe ici dans la documentation officielle https //www back4app com/docs/javascript/parse javascript sdk 2 enregistrer des données sur back4app dans cette étape, nous allons créer une classe avec la console js et les codes javascript fournis par \<font color="#2166ae">parse\</font> et nous allons créer des requêtes pour cette classe créons une \<font color="#2166ae">profil\</font> classe, qui sera la cible de nos requêtes dans ce guide sur \<font color="#2166ae">parse\</font> dashboard, il est possible d'exécuter du code javascript directement, en interrogeant et en mettant à jour le contenu de votre base de données d'application à l'aide des commandes js sdk exécutez le code ci dessous depuis votre console js et insérez les données sur back4app voici à quoi ressemble la console js dans votre tableau de bord allez y et créez la classe utilisateur \<font color="#2166ae">profil\</font> avec le contenu d'exemple suivant 1 // add profile objects and create table 2 // adam sandler 3 let profile = new parse object('profile'); 4 profile set('name', 'adam sandler'); 5 profile set('birthday', new date('09/09/1966')); 6 profile set('friendcount', 2); 7 profile set('favoritefoods', \['lobster', 'bread']); 8 await profile save(); 9 10 // adam levine 11 profile = new parse object('profile'); 12 profile set('name', 'adam levine'); 13 profile set('birthday', new date('03/18/1979')); 14 profile set('friendcount', 52); 15 profile set('favoritefoods', \['cake', 'bread']); 16 await profile save(); 17 18 // carson kressley 19 profile = new parse object('profile'); 20 profile set('name', 'carson kressley'); 21 profile set('birthday', new date('11/11/1969')); 22 profile set('friendcount', 12); 23 profile set('favoritefoods', \['fish', 'cookies']); 24 await profile save(); 25 26 // dan aykroyd 27 profile = new parse object('profile'); 28 profile set('name', 'dan aykroyd'); 29 profile set('birthday', new date('07/01/1952')); 30 profile set('friendcount', 66); 31 profile set('favoritefoods', \['jam', 'peanut butter']); 32 await profile save(); 33 34 // eddie murphy 35 profile = new parse object('profile'); 36 profile set('name', 'eddie murphy'); 37 profile set('birthday', new date('04/03/1961')); 38 profile set('friendcount', 49); 39 profile set('favoritefoods', \['lettuce', 'pepper']); 40 await profile save(); 41 42 // fergie 43 profile = new parse object('profile'); 44 profile set('name', 'fergie'); 45 profile set('birthday', new date('03/27/1975')); 46 profile set('friendcount', 55); 47 profile set('favoritefoods', \['lobster', 'shrimp']); 48 await profile save(); 49 50 console log('success!'); 3 interroger les données maintenant que vous avez une classe peuplée, nous pouvons maintenant effectuer quelques requêtes de base commençons par filtrer \<font color="#2166ae">profile\</font> les résultats par nom, qui est un champ de type chaîne, en recherchant des valeurs qui contiennent le nom \<font color="#2166ae">adam\</font> en utilisant le \<font color="#2166ae">parse query contains\</font> méthode 1 // create your query 2 let parsequery = new parse query('profile'); 3 4 // `contains` is a basic query method that checks if string field 5 // contains a specific substring 6 parsequery contains('name', 'adam'); 7 8 // the query will resolve only after calling this method, retrieving 9 // an array of `parse objects` 10 let queryresults = await parsequery find(); 11 12 // let's show the results 13 for (let result of queryresults) { 14 // you access `parse objects` attributes by using ` get` 15 console log(result get('name')); 16 }; interrogeons maintenant par le champ de type nombre \<font color="#2166ae">friendcount\</font> en utilisant une autre méthode de requête courante, \<font color="#2166ae">parse query greaterthan\</font> dans ce cas, nous voulons les utilisateurs \<font color="#2166ae">profiles\</font> pour lesquels le nombre d'amis est supérieur à 20 1 // create your query 2 let parsequery = new parse query('profile'); 3 4 // `greaterthan` is a basic query method that does what it 5 // says on the tin 6 parsequery greaterthan('friendcount', 20); 7 8 // the query will resolve only after calling this method, retrieving 9 // an array of `parse objects` 10 let queryresults = await parsequery find(); 11 12 // let's show the results 13 for (let result of queryresults) { 14 // you access `parse objects` attributes by using ` get` 15 console log(`name ${result get('name')}, friend count ${result get('friendcount')}`); 16 }; d'autres méthodes de requête récurrentes sont \<font color="#2166ae">parse query ascending\</font> et \<font color="#2166ae">parse query descending\</font> , responsables de l'ordre de vos requêtes cet ordre peut être effectué dans la plupart des types de données, alors ordonnons une requête par le champ de date \<font color="#2166ae">birthday\</font> par le plus jeune 1 // create your query 2 let parsequery = new parse query('profile'); 3 4 // `descending` and `ascending` can and should be chained 5 // with other query methods to improve your queries 6 parsequery descending('birthday'); 7 8 // the query will resolve only after calling this method, retrieving 9 // an array of `parse objects` 10 let queryresults = await parsequery find(); 11 12 // let's show the results 13 for (let result of queryresults) { 14 // you access `parse objects` attributes by using ` get` 15 console log(`name ${result get('name')}, birthday ${result get('birthday')}`); 16 }; comme indiqué ici auparavant, vous pouvez et devez enchaîner les méthodes de requête pour obtenir des résultats plus raffinés combinons alors les exemples précédents dans une seule requête 1 // create your query 2 let parsequery = new parse query('profile'); 3 4 parsequery contains('name', 'adam'); 5 parsequery greaterthan('friendcount', 20); 6 parsequery descending('birthday'); 7 8 // the query will resolve only after calling this method, retrieving 9 // an array of `parse objects` 10 let queryresults = await parsequery find(); 11 12 // let's show the results 13 for (let result of queryresults) { 14 // you access `parse objects` attributes by using ` get` 15 console log(`name ${result get('name')}, friend count ${result get('friendcount')}, birthday ${result get('birthday')}`); 16 }; 4 requête depuis notre application android nous allons maintenant effectuer les opérations que nous avons faites ci dessus depuis la console js avec java et kotlin dans notre application android nous allons lister les profils en effectuant 4 requêtes différentes 1 private void doquerybyname() { 2 parsequery\<parseobject> query = new parsequery<>("profile"); 3 query wherecontains("name", "adam"); 4 progressdialog show(); 5 query findinbackground((objects, e) > { 6 progressdialog hide(); 7 if (e == null) { 8 adapter = new resultadapter(this, objects); 9 resultlist setlayoutmanager(new linearlayoutmanager(this)); 10 resultlist setadapter(adapter); 11 } else { 12 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 13 } 14 }); 15 } 16 17 private void doquerybyfriendcount() { 18 parsequery\<parseobject> query = new parsequery<>("profile"); 19 query wheregreaterthan("friendcount", 20); 20 progressdialog show(); 21 query findinbackground((objects, e) > { 22 progressdialog hide(); 23 if (e == null) { 24 adapter = new resultadapter(this, objects); 25 resultlist setlayoutmanager(new linearlayoutmanager(this)); 26 resultlist setadapter(adapter); 27 } else { 28 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 29 } 30 }); 31 } 32 33 private void doquerybyordering() { 34 parsequery\<parseobject> query = new parsequery<>("profile"); 35 query orderbydescending("birthday"); 36 progressdialog show(); 37 query findinbackground((objects, e) > { 38 progressdialog hide(); 39 if (e == null) { 40 adapter = new resultadapter(this, objects); 41 resultlist setlayoutmanager(new linearlayoutmanager(this)); 42 resultlist setadapter(adapter); 43 } else { 44 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 45 } 46 }); 47 } 48 49 private void doquerybyall() { 50 parsequery\<parseobject> query = new parsequery<>("profile"); 51 query wherecontains("name", "adam"); 52 query wheregreaterthan("friendcount", 20); 53 query orderbydescending("birthday"); 54 progressdialog show(); 55 56 query findinbackground((objects, e) > { 57 progressdialog hide(); 58 59 if (e == null) { 60 adapter = new resultadapter(this, objects); 61 resultlist setlayoutmanager(new linearlayoutmanager(this)); 62 resultlist setadapter(adapter); 63 resultlist setnestedscrollingenabled(false); 64 } else { 65 toast maketext(this, e getlocalizedmessage(), toast length short) show(); 66 } 67 }); 68 }1 private fun doquerybyname() { 2 val query = parsequery\<parseobject>("profile") 3 query wherecontains("name", "adam") 4 progressdialog!! show() 5 query findinbackground { objects list\<parseobject>?, e parseexception? > 6 progressdialog!! hide() 7 if (e == null) { 8 adapter = resultadapter(this, objects) 9 resultlist!! layoutmanager = linearlayoutmanager(this) 10 resultlist!! adapter = adapter 11 } else { 12 toast maketext(this, e localizedmessage, toast length short) show() 13 } 14 } 15 } 16 17 private fun doquerybyfriendcount() { 18 val query = parsequery\<parseobject>("profile") 19 query wheregreaterthan("friendcount", 20) 20 progressdialog!! show() 21 query findinbackground { objects list\<parseobject>?, e parseexception? > 22 progressdialog!! hide() 23 if (e == null) { 24 adapter = resultadapter(this, objects) 25 resultlist!! layoutmanager = linearlayoutmanager(this) 26 resultlist!! adapter = adapter 27 } else { 28 toast maketext(this, e localizedmessage, toast length short) show() 29 } 30 } 31 } 32 33 private fun doquerybyordering() { 34 val query = parsequery\<parseobject>("profile") 35 query orderbydescending("birthday") 36 progressdialog!! show() 37 query findinbackground { objects list\<parseobject>?, e parseexception? > 38 progressdialog!! hide() 39 if (e == null) { 40 adapter = resultadapter(this, objects) 41 resultlist!! layoutmanager = linearlayoutmanager(this) 42 resultlist!! adapter = adapter 43 } else { 44 toast maketext(this, e localizedmessage, toast length short) show() 45 } 46 } 47 } 48 49 private fun doquerybyall() { 50 val query = parsequery\<parseobject>("profile") 51 query wherecontains("name", "adam") 52 query wheregreaterthan("friendcount", 20) 53 query orderbydescending("birthday") 54 progressdialog!! show() 55 query findinbackground { objects list\<parseobject>?, e parseexception? > 56 progressdialog!! hide() 57 if (e == null) { 58 adapter = resultadapter(this, objects) 59 resultlist!! layoutmanager = linearlayoutmanager(this) 60 resultlist!! adapter = adapter 61 resultlist!! isnestedscrollingenabled = false 62 } else { 63 toast maketext(this, e localizedmessage, toast length short) show() 64 } 65 } 66 } c'est fait ! à la fin de ce guide, vous avez appris comment fonctionnent les requêtes de données de base sur parse et comment les effectuer sur back4app depuis une application android