Afficher données Android listview MySQL

- - Dernière réponse : Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
- 17 mars 2019 à 11:44
Bonjour,

J'ai une inquiétude depuis sur l'affichage des données une base de données vers mon application mobile. J'arrive à faire l'insertion, tout marche bien jusqu'ici. Sauf que je n'arrive pas comment on utilise
ListView
.
J'ai parcouru le web en vain. Tout ce que je trouve est toujours complexe.
Je veux juste savoir s'il y a un code simple qui permet de sélectionner les données depuis ma base de données MySQL vers mon application mobile en utilisant
ListView
?

Merci d'avance.
Afficher la suite 

1 réponse

Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
85
0
Merci
Salut,

Tu as regardé ce lien (ICI)?

Bonsoir Twinuts,

En réalité, je voyais ça de génie. Mais, après avoir lu attentivement le lien que vous m'avez envoyé, j'ai compris que, c'est vraiment un simple. Je m'en sors maintenant facilement.

Mais, j'ai toujours un soucis. Par exemple, je veux afficher une depuis ma base de données dans mon
TextView
, mais, je ne sais pas comment utiliser par exemple :
ImageView maPhoto = (ImageView) convertView.findViewById(R.id.idPhoto) ; maPhoto.setImage(insertionPhoto.get(position).getMaPhoto()) ; 

Quand je le fais comme cela, je reçois des erreurs dans Android studio.
Comment faire pour mettre à jour la photo en utilisant son ID ?

Merci d'avance
Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
85 -
Salut,

Je n'ai pas bien compris le problème.
Quel erreur ?
Quel est le format retourné par getMaPhoto ?
Bonjour Twinuts,

Au fait, ça retourne un String, mais, quand je veux mettre à jour le ImageView, il me parle de Incompatibilité de type.
Comme c'est le lien de l'image que je reçois depuis MySQL, je le récupère dans un String et faire une mise à jour de ImageView afin de l'afficher.
Est-ce que c'est le type String que je dois utiliser pour récupérer le lien de la photo ou c'est un autre type ?

Merci d'avance
Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
85 -
Salut,

Pour mettre à jour un ImageView depuis une URL il suffit de procéder comme suit:
L'exemple ci-dessous est fait au plus simple et devrait normalement être utilisé avec un AsyncTask
void refreshImage(Activity myActivity, ImageView imageView, String url)
{
  new Thread(() ->
  {
    try 
    {
      HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
      connection.connect();
      InputStream input = connection.getInputStream();
      final Bitmap bitmap = BitmapFactory.decodeStream(input);
      input.close();
      connection.disconnect();
      myActivity.runOnUiThread(() -> imageView.setImageBitmap(bitmap));
    } 
    catch (Exception e) 
    {
      Log.e(getClass().getSimpleName(), "Exception: " + e.getMessage(), e);
      myActivity.runOnUiThread(() -> 
    imageView.setImageResource(R.mipmap.image_not_found));
    }
  }).start();
}


Il te suffit de mettre cette routine dans le getView de l'adapter de ta ListView.
...
class ViewHolder
{
  ...
  ImageView maPhoto;
  ...
}

@Override
public @NonNull View getView(final int position, final View convertView,
                      @NonNull final ViewGroup parent) 
{
  View v = convertView;
  ViewHolder holder;
  if (v == null) 
  {
    final ViewGroup nullParent = null;
    final LayoutInflater inflater  = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    assert inflater != null;
    v = inflater .inflate(R.layout.theview, nullParent, false);
    holder = new ViewHolder();
    /* init du viewholder */
    ...
    holder.maPhoto = v.findViewById(R.id.idPhoto);
    ...
    v.setTag(holder);
  } 
  else 
  {
    holder = (ViewHolder) v.getTag();
  }
  ...
  refreshImage(mActivity, holder.maPhoto, insertionPhoto.get(position).getMaPhoto());
  ...
}


Ici les images vont êtres rafraîchies de manière asynchrone.
Commenter la réponse de Twinuts