IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Modifier un élément d'une listView


Sujet :

Composants graphiques Android

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut Modifier un élément d'une listView
    Bonjour,

    je voudrais sur un clic sur une vue de ma listView que le texte soit barré, j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    ((TextView) view.findViewById(R.id.libelle_site)).setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
                }
            });
    ça marche mais le problème c'est que ça modifie d'autre éléments de ma listView (j'ai remarqué que l'élément qui vient après le dernier élément visible a été modifié)

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 63
    Par défaut
    Bonjour,

    Utilise une classe pour customiser l'adaptation de ta liste, ça te permettra de gérer chaque élément de celle-ci.

    Un exemple concret :
    https://medium.com/mindorks/custom-a...y-b6c4930560dd

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut
    C'est ce que j'ai fait, mais j'ai toujours le même problème

    Voici le code dans mon activité contenant la listView:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            final SiteAdapter siteAdapter = new SiteAdapter(SiteChoiceActivity.this, sites);
            listView.setAdapter(siteAdapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Site selectedSite = (sites.get(position));
                    selectedSite.setIsBarred(true);
                    sites.set(position, selectedSite);
                    siteAdapter.notifyDataSetChanged();
                }
            });
    et voici mon adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    public class SiteAdapter extends ArrayAdapter<Site> {
     
        public SiteAdapter(Context context, List<Site> sites) {
            super(context, 0, sites);
        }
     
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
     
            if(convertView == null){
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_site,parent, false);
            }
     
            SiteViewHolder viewHolder = (SiteViewHolder) convertView.getTag();
            if(viewHolder == null){
                viewHolder = new SiteViewHolder();
                viewHolder.heure_supposee = convertView.findViewById(R.id.heure_supposee);
                viewHolder.libelle_site = convertView.findViewById(R.id.libelle_site);
                viewHolder.logo_telephone = convertView.findViewById(R.id.logo_phone);
                convertView.setTag(viewHolder);
            }
     
            Site site = getItem(position);
     
            viewHolder.heure_supposee.setText(site.getHeure_supposee());
            viewHolder.libelle_site.setText(site.getLibelle_site());
            viewHolder.logo_telephone.setVisibility(View.INVISIBLE);
            if (site.getSur_appel().equals("O")) viewHolder.logo_telephone.setVisibility(View.VISIBLE);
            if (site.getIsBarred()) viewHolder.libelle_site.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
     
            return convertView;
        }
     
        private class SiteViewHolder{
            public TextView heure_supposee;
            public TextView libelle_site;
            public ImageView logo_telephone;
        }
    }

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2018
    Messages : 17
    Par défaut
    Bonjour, désolé pour le double post mais même arpès avoir demandé de l'aide sur plusieurs forums, je n'ai toujours pas eu de réponse, je vous met le code en entier :

    Activité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    DatabaseHandler colisageBase;
    ListView listView;
    List<Site> sites;
    String id_tournee;
    SiteAdapter siteAdapter;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_site_choice);
        Intent intent = getIntent();
        id_tournee = intent.getStringExtra("idTourneeSelectionnee");
        this.listView = findViewById(R.id.list_view_site);
        this.colisageBase = new DatabaseHandler(this);
        sites = colisageBase.selectAllSite(id_tournee);
        siteAdapter = new SiteAdapter(SiteChoiceActivity.this, sites);
        listView.setAdapter(siteAdapter);
        colisageBase.closeDB();
     
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Site selectedSite = sites.get(position);
                selectedSite.setIsBarred(true);
                sites.set(position, selectedSite);
                siteAdapter.notifyDataSetChanged();
                //goToOperationActivity(selectedSite.SiteOut());
            }
        });
    Adaptateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    public class SiteAdapter extends ArrayAdapter<Site> {
     
    public SiteAdapter(Context context, List<Site> sites) {
        super(context, 0, sites);
    }
     
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
     
        if(convertView == null){
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_site,parent, false);
        }
     
        SiteViewHolder viewHolder = (SiteViewHolder) convertView.getTag();
        if(viewHolder == null){
            viewHolder = new SiteViewHolder();
            viewHolder.heure_supposee = convertView.findViewById(R.id.heure_supposee);
            viewHolder.libelle_site = convertView.findViewById(R.id.libelle_site);
            viewHolder.logo_telephone = convertView.findViewById(R.id.logo_phone);
            convertView.setTag(viewHolder);
        }
     
        Site site = getItem(position);
     
        viewHolder.heure_supposee.setText(site.getHeure_supposee());
        viewHolder.libelle_site.setText(site.getLibelle_site());
        viewHolder.logo_telephone.setVisibility(View.INVISIBLE);
        if (site.getSur_appel().equals("O")) viewHolder.logo_telephone.setVisibility(View.VISIBLE);
        if (site.isBarred()) viewHolder.libelle_site.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
     
        return convertView;
    }
     
    @Override
    public void notifyDataSetChanged()
    {
        super.notifyDataSetChanged();
    }
     
    private class SiteViewHolder{
        public TextView heure_supposee;
        public TextView libelle_site;
        public ImageView logo_telephone;
    }

Discussions similaires

  1. [Blend] Comment modifier l'apparence d'une Listview ?
    Par vhellers dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 04/09/2008, 21h35
  2. Modifier un champ via une listview et un textbox
    Par JLV1975 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2008, 16h03
  3. Soulignement des éléments d'une ListView
    Par xanatos dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/02/2008, 23h26
  4. Réponses: 2
    Dernier message: 12/02/2008, 10h51
  5. Comment récuperer un élément dans une listview lors d'une sélection
    Par hellspawn_ludo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 02h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo