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

Android Discussion :

Mise à jour d'une vue


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut Mise à jour d'une vue
    Bonjour,

    Dans ma gridview principale, j'ai 2 items correspondants à mes produits intégrés, qui apparaissent grisés s'ils n'ont pas été acheté, et normalement si oui. Je controle cela dans la getView de mon adapter, genre "si position ==2, on change le background". Ca marche a peu près bien. A peu près car quand on scrolle vite la gridview, parfois, d'autre items grisés apparaissent.

    Le problème : quand l'utilisateur est premium, il a bien accès aux items, mais ceux si sont encore grisés au début. Pour les rendre normaux, il faut recréer l'activité (genre une rotation). J'ai pourtant mis le setContentView après l'analyse de l'état premium, pour que l'activité puisse se créer dans les bonnes règles, mais rien n'y fait. J'ai aussi essayé de gérer l'affichage de la gridview dans onStart, mais c'est pire.

    Auriez vous une idée ?
    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Code de l'adapter ?

    Sinon, pour rafraîchir il y a

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Voici le code, extrait de http://www.piwai.info/android-adapter-good-practices/
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    package com.turvy.organicreaction.adapters;
     
    import android.content.Context;
    import android.graphics.Color;
    import android.util.SparseArray;
    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 com.turvy.organicreaction.R;
    import com.turvy.organicreaction.activities.MainActivity;
     
    import java.util.ArrayList;
    import java.util.HashMap;
     
    /**
     * Adapter qui permet d'afficher le menu principal
     * 
     * @author Florent
     */
    public class MainListAdapter extends BaseAdapter {
     
        static final String TITLE = "title";
        static final String ICON = "icon";
     
        private ArrayList<HashMap<String, String>> listItem;
        private final Context context;
     
        public MainListAdapter(Context context,
                ArrayList<HashMap<String, String>> listItem) {
            super();
            this.context = context;
            this.listItem = listItem;
        }
     
        @Override
        public int getCount() {
            return listItem.size();
        }
     
        @Override
        public HashMap<String, String> getItem(int position) {
            return listItem.get(position);
        }
     
        @Override
        public long getItemId(int position) {
            return position;
        }
     
        public static class ViewHolder {
     
            @SuppressWarnings("unchecked")
            public static <T extends View> T get(View view, int id) {
                SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
                if (viewHolder == null) {
                    viewHolder = new SparseArray<View>();
                    view.setTag(viewHolder);
                }
                View childView = viewHolder.get(id);
                if (childView == null) {
                    childView = view.findViewById(id);
                    viewHolder.put(id, childView);
                }
                return (T) childView;
            }
        }
     
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
     
            if (convertView == null) {
     
                convertView = LayoutInflater.from(context).inflate(
                        R.layout.main_item, parent, false);
            }
     
            TextView title = ViewHolder.get(convertView, R.id.title);
            ImageView icon = ViewHolder.get(convertView, R.id.icon);
     
            HashMap<String, String> item = getItem(position);
            title.setText(item.get(TITLE));
            int iconID = convertView
                    .getContext()
                    .getApplicationContext()
                    .getResources()
                    .getIdentifier(
                            item.get(ICON),
                            "drawable",
                            convertView.getContext().getApplicationContext()
                                    .getPackageName());
            icon.setImageResource(iconID);
            if (!MainActivity.isPremium) {
                if (position == 5 || position == 8) {
                    icon.setBackgroundColor(Color.GRAY);
                }
            }
            return convertView;
        }
    }
    Je connais la fonction notifyDataSetChanged, et je l'avais essayé, mais sans succès.

Discussions similaires

  1. Régle de mise à jour d'une vue
    Par billybob2 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/06/2011, 16h50
  2. "Mise à jour" d'une vue
    Par mostro_600 dans le forum SQL
    Réponses: 6
    Dernier message: 18/06/2007, 18h24
  3. [SWT] Mise à jour d'une vue
    Par Nikk0 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 16/06/2007, 14h13
  4. Mise a jour d'une vue
    Par pierrot2908 dans le forum Interfaces Graphiques en Java
    Réponses: 12
    Dernier message: 24/04/2007, 18h23
  5. [FORMS6] : mise à jour d'une vue
    Par gaultier dans le forum Forms
    Réponses: 13
    Dernier message: 03/07/2006, 13h15

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