Partage
  • Partager sur Facebook
  • Partager sur Twitter

widgets plus avancés

Sujet résolu
    19 août 2020 à 9:39:18

    Bonjour, je suis en train de suivre le court "creez des application pour android et je bloque sur le chapitre concernant les widgets avancés.

    voici le code que je ne comprend pas:

    public View getView(int r, View convertView, ViewGroup parent) {
      ViewHolder holder = null;
      // Si la vue n'est pas recyclée
      if(convertView == null) {
        // On récupère le layout
        convertView  = mInflater.inflate(R.layout.item, null);
        			
        holder = new ViewHolder();
        // On place les widgets de notre layout dans le holder
        holder.mNom = (TextView) convertView.findViewById(R.id.nom);
        holder.mNumero = (TextView) convertView.findViewById(R.id.numero);
        holder.mPhoto = (ImageView) convertView.findViewById(R.id.photo);
        			
        // puis on insère le holder en tant que tag dans le layout
        convertView.setTag(holder);
      } else {
        // Si on recycle la vue, on récupère son holder en tag
        holder = (ViewHolder)convertView.getTag();
      }
        
      // Dans tous les cas, on récupère le contact téléphonique concerné
      Contact c = (Contact)getItem(r); // d'ou vient la class Contact ainsi que r dans getItem(r)?
      // Si cet élément existe vraiment…
      if(c != null) {
        // On place dans le holder les informations sur le contact
        holder.mNom.setText(c.getNom());
        holder.mNumero.setText(c.getNumero());
      }
      return convertView;
    }
    

    premièrement, d’où vient la class Contact ainsi que r dans getItem(r)? ensuite comment lance t-on l'adaptateur dans l'activité?

    Merci à vous pour vos éclaircissements.

    le lien du court ici

    -
    Edité par bocaldesmers 19 août 2020 à 9:42:44

    • Partager sur Facebook
    • Partager sur Twitter

    Quand on fait tout, on est bon en rien...

      23 août 2020 à 11:34:21

      Bien j'ai finalement trouve comment faire ce que je voulais. Ce monologue aura donc été profitable

      Voici la solution au cas ou il y en d'autre qui galèrent comme moi:

      activity_main.xml:

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:id="@+id/vuePrincipal">
      
          <TextView
              android:id="@+id/nomPrenom"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="dfdgdfgdfhghf"/>
      
          <TextView
              android:id="@+id/numTel"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/nomPrenom"
              android:text="113543643648"/>
      
          <ImageView
              android:id="@+id/imageView"
              android:layout_width="60dp"
              android:layout_height="60dp"
              android:layout_marginLeft="6dp"
              android:layout_marginRight="6dp"
              android:layout_marginTop="5dp"
              android:layout_marginBottom="5dp"
              android:contentDescription="image"
              android:src="@drawable/sourir"
              android:layout_alignParentRight="true"/>
      
          <ListView
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/listView"
              android:background="@color/colorAccent"/>
      </RelativeLayout>


      la class MainActivity:

      package fr.adaptateurperso;
      
      import android.app.Activity;
      import android.os.Bundle;
      import android.util.Log;
      import android.widget.ListView;
      
      import java.util.ArrayList;
      
      
      public class MainActivity extends Activity
      {
          private ArrayList<Contact> listContact;
          private int[] image = {
                  R.drawable.sourir, R.drawable.heureux,
                  R.drawable.clin_oeil};
          private String[] valeurNom = new String[] { "maman",
                  "mamie", "papi",},
                  valeurNum = new String[]{"111111", "2222222", "3333333"};
      
          protected void onCreate(Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              int vue = R.layout.activity_main;
              setContentView(vue);
      
              ListView list = (ListView) findViewById(R.id.listView);
      
              listContact = new ArrayList<Contact>();
              for(int i=0; i<3; i++)
              {
                  listContact.add(new Contact(valeurNom[i],valeurNum[i], image[i]));
              }
      
              RepertoireAdapter adapter = new RepertoireAdapter(this, listContact);
              list.setAdapter(adapter);
          }
      }


      la class RepertoirAdapter:

      package fr.adaptateurperso;
      
      import android.content.Context;
      import android.util.Log;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.ViewGroup;
      import android.widget.BaseAdapter;
      import android.widget.ImageView;
      import android.widget.TextView;
      
      import java.util.ArrayList;
      
      public class RepertoireAdapter extends BaseAdapter
      {
          private Context contexte;
          private ArrayList<Contact> contact;
      
          public RepertoireAdapter(Context contexte, ArrayList<Contact> contact)
          {
              super();
              this.contexte = contexte;
              this.contact = contact;
          }
      
          @Override
          public int getCount()
          {
              Log.i("getCount() => ", String.valueOf(contact.size()));
              return contact.size();
          }
      
          @Override
          public Object getItem(int position)
          {
              Log.i("getItem() => ", String.valueOf(contact.get(position)));
              return contact.get(position);
          }
      
          @Override
          public long getItemId(int position)
          {
              Log.i("getItemId => ", String.valueOf(position));
              return position;
          }
      
      
          LayoutInflater inflater;
          ViewHolder holder = null;
      
          @Override
          public View getView(int position, View convertView, ViewGroup parent)
          {
              ViewHolder holder = null;
      
              if(convertView == null)
              {
                  convertView = LayoutInflater.from(contexte).inflate(R.layout.activity_main, null);
      
                  holder = new ViewHolder();
                  holder.nom = (TextView) convertView.findViewById(R.id.nomPrenom);
                  holder.num = (TextView) convertView.findViewById((R.id.numTel));
                  holder.photo = (ImageView) convertView.findViewById(R.id.imageView);
      
                  convertView.setTag(holder);
              }
              else
              {
                  holder = (ViewHolder) convertView.getTag();
              }
      
              Contact c = (Contact) getItem(position);
              if(c != null)
              {
                  holder.nom.setText(c.getNom());
                  holder.num.setText(c.getNum());
                  holder.photo.setImageResource(c.getImage());
              }
      
              return convertView;
      
          }
      
          static class ViewHolder
          {
              public TextView nom,
                              num;
              public ImageView photo;
          }
      }


      et pour finir la class Contact:

      package fr.adaptateurperso;
      
      public class Contact
      {
          private String nom,
                         num;
          private int image;
      
          public Contact(String nom, String num, int image)
          {
              this.nom = nom;
              this.num = num;
              this.image = image;
          }
      
          public String getNom()
          {
              return nom;
          }
      
          public String getNum()
          {
              return num;
          }
      
          public int getImage()
          {
              return image;
          }
      }
      Voila comme ça marche!!!!!
      Merci à moi!!!

      -
      Edité par bocaldesmers 23 août 2020 à 21:43:57

      • Partager sur Facebook
      • Partager sur Twitter

      Quand on fait tout, on est bon en rien...

      widgets plus avancés

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown