Copier un nombre de ma listview et le placer dans une variab
Résolurapidegoyes Messages postés 137 Date d'inscription samedi 22 février 2020 Statut Membre Dernière intervention 9 mai 2025 - 7 mai 2025 à 16:07
- Copier un nombre de ma listview et le placer dans une variab
- Placer des points sur une carte - Guide
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Afficher le 0 devant un nombre dans excel - Guide
- Retrouver un copier-coller android - Guide
9 réponses
Modifié le 6 mai 2025 à 21:47
Bonsoir BunoCS,
Super c'est bon les valeurs sont dans le Cursor.
A force de persévérer ça paye!
Il fallait mettre le nom de la colonne recherchée en majuscules. msyst en MSYST
Voici ci-dessous la sortie Logcat avec erreur et sans erreurs et en dessous le code concerné:
Vérifications des résultats et erreurs dans Logcat (Log ,E ou Log,d)
SQLQuery -------> D Requête exécutée : SELECT msyst FROM archives
CursorCheck -------> D Nombre de colonnes : 1
CursorCheck -------> D Noms des colonnes : [MSYST]
CursorCheck -------> E La colonne msyst est ABSENTE !
CursorData -------> E Error processing cursor data:column 'msyst' does not exist
Vérifications des résultats Tous est correct les valeurs sont dans le Cursor
SQLQuery -------> D Requête exécutée : SELECT MSYST FROM archives
CursorCheck ------------> D Nombre de colonnes : 1
CursorCheck ------------> D Noms des colonnes : [MSYST]
CursorCheck ------------> D La colonne msyst est présente !
ColumnNames ------------> D Column names are: [MSYST]
CursorData ------------> D ID:, msyst:136 //la valeur recherchée
CursorData ------------> D ID:, msyst:128 //idem
Le code correct
db = new SQLiteDataBaseHelper(this);//déclaration de l'objet base de données suite SQLiteDatabase readableDb = db.getReadableDatabase(); Cursor cursor = null; try { // Requête pour sélectionner uniquement la colonne 'msyst' String query = "SELECT MSYST FROM archives"; Log.d("SQLQuery", "Requête exécutée : " + query); cursor = readableDb.rawQuery(query, null); //*************************** if (cursor == null){ Log.e("CursorCheck","Cursor is null"); }else { Log.d("CursorCheck", "Nombre de colonnes : " + cursor.getColumnCount()); String[] columnNames = cursor.getColumnNames(); Log.d("CursorCheck", "Noms des colonnes : " + java.util.Arrays.toString(columnNames)); if (cursor.getColumnIndex("MSYST") != -1) { Log.d("CursorCheck", "La colonne msyst est présente !"); } else { Log.e("CursorCheck", "La colonne msyst est ABSENTE !"); } } //***************************** // Vérifier si le curseur contient des données if (cursor != null && cursor.moveToFirst()) { //int idColumnIndex = cursor.getColumnIndex("id"); // Obtenir l'index de la colonne 'msyst' int MSYSTColumnIndex = cursor.getColumnIndexOrThrow("MSYST"); List<Integer> MSYSTValues = new ArrayList<>(); // Get column names pour voir les noms des colonnes String[] columnNames = cursor.getColumnNames(); Log.d("ColumnNames", "Column names are: " + Arrays.toString(columnNames)); //Add this line for debug // Parcourir les résultats et récupérer les valeurs de 'msyst' do { //int id = cursor.getInt(idColumnIndex); int MSYST = cursor.getInt(MSYSTColumnIndex); MSYSTValues.add(MSYST); // Ajouter la valeur à la liste Log.d("CursorData", "ID:" + ", msyst:" + MSYST); } while (cursor.moveToNext()); } else{ Log.w("CursorData", "No data found in the cursor"); } } catch (Exception e){ Log.e("CursorData", "Error processing cursor data:" + e.getMessage()); } finally { if (cursor != null) { cursor.close(); } if (readableDb != null) { readableDb.close(); } }
En tout cas un grand merciiiiiiiiiii à toi pour le temps que tu consacres pour la vie du forum et pour m'aider.
Je vais maintenant continuer par ce que tu m'as donné pour peupler le graphique.
Très cordialement rapidegoyes
et à +++
5 mai 2025 à 21:31
Bonsoir BunoCS,
Merci pour le lien, je vais le consulter
Très cordialement à +++
rapidegoyes
7 mai 2025 à 16:07
Bonsoir BunoCS,
Super c'est bon les valeurs sont dans le Cursor.
A force de persévérer ça paye!
Il fallait mettre le nom de la colonne recherchée en majuscules. msyst en MSYST
Voici ci-dessous la sortie Logcat avec erreur et sans erreurs et en dessous le code concerné:
Vérifications des résultats et erreurs dans Logcat (Log ,E ou Log,d)
SQLQuery -------> D Requête exécutée : SELECT msyst FROM archives
CursorCheck -------> D Nombre de colonnes : 1
CursorCheck -------> D Noms des colonnes : [MSYST]
CursorCheck -------> E La colonne msyst est ABSENTE !
CursorData -------> E Error processing cursor data:column 'msyst' does not exist
Vérifications des résultats Tous est correct les valeurs sont dans le Cursor
SQLQuery -------> D Requête exécutée : SELECT MSYST FROM archives
CursorCheck ------------> D Nombre de colonnes : 1
CursorCheck ------------> D Noms des colonnes : [MSYST]
CursorCheck ------------> D La colonne msyst est présente !
ColumnNames ------------> D Column names are: [MSYST]
CursorData ------------> D ID:, msyst:136 //la valeur recherchée
CursorData ------------> D ID:, msyst:128 //idem
Le code correct
db = new SQLiteDataBaseHelper(this);//déclaration de l'objet base de données suite
SQLiteDatabasereadableDb = db.getReadableDatabase();
Cursorcursor = null;
try {
// Requête pour sélectionner uniquement la colonne 'msyst'
Stringquery = "SELECT MSYST FROM archives";
Log.d("SQLQuery", "Requête exécutée : " + query);
cursor = readableDb.rawQuery(query, null);
//***************************
if (cursor == null){
Log.e("CursorCheck","Cursor is null");
}else {
Log.d("CursorCheck", "Nombre de colonnes : " + cursor.getColumnCount());
String[] columnNames = cursor.getColumnNames();
Log.d("CursorCheck", "Noms des colonnes : " + java.util.Arrays.toString(columnNames));
if (cursor.getColumnIndex("MSYST") != -1) {
Log.d("CursorCheck", "La colonne msyst est présente !");
} else {
Log.e("CursorCheck", "La colonne msyst est ABSENTE !");
}
}
//*****************************
// Vérifier si le curseur contient des données
if (cursor != null && cursor.moveToFirst()) {
//int idColumnIndex = cursor.getColumnIndex("id");
// Obtenir l'index de la colonne 'msyst'
int MSYSTColumnIndex = cursor.getColumnIndexOrThrow("MSYST");
List<Integer>MSYSTValues = new ArrayList<>();
// Get column names pour voir les noms des colonnes
String[] columnNames = cursor.getColumnNames();
Log.d("ColumnNames", "Column names are: " + Arrays.toString(columnNames)); //Add this line for debug
// Parcourir les résultats et récupérer les valeurs de 'msyst'
do {
//int id = cursor.getInt(idColumnIndex);
int MSYST = cursor.getInt(MSYSTColumnIndex);
MSYSTValues.add(MSYST); // Ajouter la valeur à la liste
Log.d("CursorData", "ID:" + ", msyst:" + MSYST);
} while (cursor.moveToNext());
} else{
Log.w("CursorData", "No data found in the cursor");
}
}
catch (Exceptione){
Log.e("CursorData", "Error processing cursor data:" + e.getMessage());
}
finally {
if (cursor != null) {
cursor.close();
}
if (readableDb != null) {
readableDb.close();
}
}
En tout cas un grand merciiiiiiiiiii à toi pour le temps que tu consacres pour la vie du forum et pour m'aider.
Je vais maintenant continuer par ce que tu m'as donné pour peupler le graphique.
Très cordialement rapidegoyes
et à +++
21 avril 2025 à 21:14
C'est moi, Bobot, votre IA préférée !
Dans Android Studio, tu peux en effet récupérer la valeur d'un élément cliqué de ta ListView.
Voici comment faire :
1. Ajoute un `setOnItemClickListener` à ta ListView.
2. Dans le `onItemClick`, tu peux récupérer l'objet de la position cliquée, le convertir en Integer et l'assigner à ta variable.
Voici un exemple de code qui pourrait t'aider :
```java
ListView maListView = (ListView) findViewById(R.id.maListView);
maListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
// récupération de la valeur de l'élément cliqué
int valeur = (Integer) parent.getItemAtPosition(position);
// assignation de la valeur à une variable
maVariable = valeur;
}
});
```
Ajuste cet exemple à tes besoins.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question23 avril 2025 à 15:55
Hello,
Un lien avec ta question précédente ? https://forums.commentcamarche.net/forum/affich-38184150-recuperer-les-donnees-d-une-table
J'avoue que je suis un peu étonné de ta question. Quelle genre de "ListView" utilises-tu ?
23 avril 2025 à 21:39
Bonsoir BunoCS
Je m'explique, depuis notre dernier post j'ai importé une librairie pour afficher un graphique à barres, différente de celle que nous avions vu ensemble. Elle est basée sur java et fonctionne super bien.
"com.github.PhilJay:MPAndroidChart"
Le graphique est peuplé par un ArrayList que voici:
private ArrayList<BarEntry> getBarEntries() { // Creating a new ArrayList // Création d'une nouvelle ArrayList barEntries = new ArrayList<>(); // Adding entries to the ArrayList for the first set // Ajout d'entrées à l'ArrayList pour le premier ensemble barEntries.add(new BarEntry(1f, 138)); barEntries.add(new BarEntry(2f, sumSyst)); barEntries.add(new BarEntry(3f, 144)); barEntries.add(new BarEntry(4f, 136)); barEntries.add(new BarEntry(5f, 131));// transfert de la variable barEntries.add(new BarEntry(6f, 0)); barEntries.add(new BarEntry(7f, 0)); barEntries.add(new BarEntry(8f, 0)); barEntries.add(new BarEntry(9f, 0)); barEntries.add(new BarEntry(10f, 0)); barEntries.add(new BarEntry(11f, 0)); barEntries.add(new BarEntry(12f, 0)); return barEntries;
La variable sumSyst est un essai de variable issue de mon code qui s'est bien reportée dans le graphique.
Pour en venir à ta question: Dans ma BDD j'ai créé une deuxième table nommée archive elle a comme fonction de sauvegarder une douzaine de relevés de tension en somme un archivage de mes datas. Les données y sont affichées à l'aide d'un ListView.à partir d'un fichier .xml.
Après le relevé N° 12 j'ai l'intention d'afficher l'ensemble des 12 datas dans le graphique à barres.
Il me faut donc peupler mon ArrayList barEntries ci-dessus avec mes 12 données.
1)--En ce moment je code pour essai des requêtes qui devrait me renvoyer un Cursor.
2)--Mon problème est de parcourir ce Cursor et transférer mes données dans mon ArrayList barEntrie.
Je pense avoir fait le tour si tu pourrais me donner quelques conseils et aide.En ce moment je fait des essais avec Gémini.
Avec mes remerciements très cordialement
A+++ rapidegoyes
24 avril 2025 à 10:49
As-tu réussi à récupérer ton Cursor ? Si oui, c'est relativement simple de créer un ArrayList à partir de celui-ci. Quelques choses comme ça:
ArrayList<BarEntry> list = new ArrayList<>(); // Récupération du Cursor // ici // Parcours du Cursor int i=0; while(cursor.moveToNext()) { int valeur = cursor.getInteger(cursor.getColumnIndex(COLUMN_VALEUR)); BarEntry entry = new BarEntry (i++, valeur); list.add(entry); }
24 avril 2025 à 21:27
Bonsoir BunoCS,
Merci pour ton aide, je vais essayer cette manip avec le Cursor. Dès que j'aurai quelque chose de cohérent je t’en ferai part.Je dois reporter mes essais à la semaine prochaine, impératif de famille....
A+++ très cordialement
rapidegoyes
4 mai 2025 à 22:55
Bonsoir BunoCS,
Je ne réussi pas à remplir le cursor de mes données.
Ce dernier je l'ai créé avec l'aide de gemini mais au moment de la vérification des données contenu,
j'ai des erreurs copie du logcat comme suit:
Failed to read row 0, column -1 from a CursorWindow which has 2 rows, 2 columns.
E Error processing cursor data:Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
J'ai modifié mon code à plusieurs reprise sans succès comme ci-dessous:
db = new SQLiteDataBaseHelper(this);//déclaration de l'objet base de données suite SQLiteDatabase readableDb = db.getReadableDatabase(); Cursor cursor = null; try { String query = "SELECT ID as _id, msyst FROM archives"; cursor = readableDb.rawQuery(query, null); if (cursor != null && cursor.moveToFirst()) { int idColumnIndex = cursor.getColumnIndex("id"); int msystColumnIndex = cursor.getColumnIndex("msyst"); // Get column names pour voir les noms des colonnes String[] columnNames = cursor.getColumnNames(); Log.d("ColumnNames", "Column names are: " + Arrays.toString(columnNames)); //Add this line for debug do { int id = cursor.getInt(idColumnIndex); int msyst = cursor.getInt(msystColumnIndex); Log.d("CursorData", "ID:" + id + ", msyst:" + msyst); } while (cursor.moveToNext()); } else{ Log.w("CursorData", "No data found in the cursor"); } } catch (Exception e){ Log.e("CursorData", "Error processing cursor data:" + e.getMessage()); } finally { if (cursor != null) { cursor.close(); } if (readableDb != null) { readableDb.close(); } }
Où intervenir pour corriger cette erreur ?
Merci de bien vouloir m'épauler
Cordialement rapidegoyes
5 mai 2025 à 14:56
Tu trouveras un mini guide basique sur l'utilisation de SQLite sur Android : https://developer.android.com/training/data-storage/sqlite?hl=fr#java
Généralement, une requête est de la forme:
SELECT * FROM table WHERE condition
avec :
- * = je veux récupérer toutes les colonnes
- table = le nom de la table dans laquelle faire la recherche
- condition = condition à remplir pour retourner un enregistrement