Android : Les Fichiers Json

Lire un fichier Json contenant des joueur(num,nom,equipe) puis remplir une listeView

1.Créer la classe joueur.java


public class Joueur {
String num;
String nom;
String equipe;
public Joueur(){}
public Joueur(String num, String nom, String equipe) {
this.num = num;
this.nom = nom;
this.equipe = equipe;
}

public String getNum() {
return num;
}

public void setNum(String num) {
this.num = num;
}

public String getNom() {
return nom;
}

public void setNom(String nom) {
this.nom = nom;
}

public String getEquipe() {
return equipe;
}

public void setEquipe(String equipe) {
this.equipe = equipe;
}
}


2.Créer le fichier joueurs.json

Il faut commencer par créer le dossier asserts dans le dossier main puis créer le fichiers joueurs.json

[{
"num": "10",
"nom": "messi",
"equipe": "PSG"
},
{
"num": "7",
"nom": "Renaldo",
"equipe": "united"
}
]

2.Créer la layout lignejoueurs.xml contenant le textView id=idligne


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/idligne"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black" />
</LinearLayout>

1.Layout


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listeViewJoeurs"/>

</LinearLayout>

2.Java


public class ListeJoueurs extends AppCompatActivity {
ListView listeViewJoeurs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_liste_joueurs);
//1.lire un fichier json
String json = null;
try {
InputStream is = getAssets().open("joueurs.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
//2.convertir vers json Veuillez ajouter le package dans le fichier: build.gradle
// implementation 'com.google.code.gson:gson:2.8.5'
Gson gson = new Gson();
Type listJoueurType = new TypeToken<List<Joueur>>() { }.getType();
List<Joueur> joueurs = gson.fromJson(json, listJoueurType );
//3.convertir la liste vers un tableau de string
String []tNomJoueurs=new String[joueurs.size()];
for(int i=0;i<joueurs.size();i++)
{
tNomJoueurs[i]=joueurs.get(i).getNom()+"\t"+ joueurs.get(i).getEquipe();
}
//4.Remplir la liste view
listeViewJoeurs = (ListView)findViewById(R.id.listeViewJoeurs);
//Créer la layout lignejoueurs.xml contenant le textView id=idligne
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.lignejoueurs, R.id.idligne,tNomJoueurs);
listeViewJoeurs.setAdapter(arrayAdapter);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}