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 :

Android hidden value ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut Android hidden value ListView
    Bonjour à tous,

    Ma listView est structuré de la facon suivante:

    J'ai le nom de la catégorie qui s'affiche dans la listView
    puis il y a une url qui est attribué pour chaque catégorie, il ne s'affiche pas car c'est une valeur caché.

    Le but est de pouvoir utilisé l'url pour pouvoir extraire des donnés lorsque l'utilisateur cliquera sur la catégorie.

    J'ai vu qu'on pouvait cacher la visibilité d'une vue en faisant: android:visibility="gone"

    J'ai crée un textView en caché, puis j'ai attibué la valur de l'url à ce textView.
    Donc j'arrive bien à récupérer l'url correspondant à la catégorie et je passe tout ça sous forme de données avec putExtra, ça fonctionne.

    Ma question c'est y a t-il un moyen encore plus simple car la si on regarde bien on doit créer autant de vues caché que de données.

    Y a t-il une manière simple et efficace pour persiter des données de facon invisible ?
    Merci

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Mettre un tag dans la vue correspondante à la valeur de l'URL que tu veux ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Oui exactement.

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Non, mais vraiment ^^
    Mets un tag avec View#setTag(Object).

    Documentation : http://developer.android.com/reference/android/view/View.html#setTag%28java.lang.Object%29
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Super je vais étudier ca.
    Merci

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Tu utilises un SimpleAdapter ou un ArrayAdapter, non ?

    Pour moi, le plus simple serait de sous-classer BaseAdapter par ton propre adapter, pour ensuite réagir au clic en faisant ce que tu veux.
    Pas besoin de "bidouille" de vues cachées ou de tag, ce dernier servant généralement à de l'optimisation dans le contexte d'une ListView.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    J'ai effectivement créer mon propore listView en héritant de baseAdapter.

    Lors du onClick:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		lv.setOnItemClickListener(new OnItemClickListener() {
     
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view,
    					int position, long id) {
    				String hId = ((TextView) view.findViewById(R.id.hiddenId)).getText().toString();
    				Intent i = new Intent(getApplicationContext(),ProductActivity.class);
    				i.putExtra("url", hId);
    				startActivity(i);
    				//Toast.makeText(getApplicationContext(), hId, Toast.LENGTH_SHORT).show();
    			}
     
    		});
    L'Adpater:
    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
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		ViewHolder holder;
     
    		if (convertView == null) {
    			holder = new ViewHolder();
    			convertView = inflater.inflate(R.layout.list_custom, null);
    			holder.tvNom = (TextView) convertView.findViewById(R.id.TextNom);
    			holder.tvPrenom = (TextView) convertView.findViewById(R.id.textPrenom);
    			holder.tvAge = (TextView) convertView.findViewById(R.id.TextAge);
    			holder.tvId = (TextView) convertView.findViewById(R.id.hiddenId);
    			convertView.setTag(holder);
     
    		} else {
    			holder = (ViewHolder) convertView.getTag();
    		}
     
    		holder.tvNom.setText(listPersonne.get(position).getNom());
    		holder.tvPrenom.setText(listPersonne.get(position).getPrenom());
    		holder.tvAge.setText(String.valueOf(listPersonne.get(position).getAge()));
    		holder.tvId.setText(String.valueOf(listPersonne.get(position).getId()));
    		return convertView;
    	}
    Mais je n'arrive toujours pas à comprendre comment je peux récupérer l'url sans utiliser de vue caché?

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Au clic, tu récupères la position de l'item touché, et tu peux donc lui lier l'objet correspondant. Ainsi, en faisant ce lien, tu peux avoir accès à des informations non représentées sur la vue.

    Avec ton code, ça donnerait :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {
            ...
            listPersonne.get(position).getUrl();
            // utilisation de l'URL.
            ...
        }
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Magnifique!
    Merci beacoup, je me suis dit aussi tiens c'est bizare car si on adopte ma méthode chose a ne pas faire lol, on créer plein de vue, du coup on instancie des vues juste pour garder des infos..

    En même temps j'ai suivi ce tuto:
    http://www.androidhive.info/2012/10/...view-tutorial/

    C'est à l'étape 14.

  10. #10
    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
    Oui... en même temps quand tu vois ce genre de code en java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (method == "POST") {
    Tu peux déjà te dire qu'il faut changer de crèmerie
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. [Android] Cube, GLSurfaceView, ListView
    Par Diane87 dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 20/05/2014, 10h53
  2. pass input Hidden value comme variable dans HREF
    Par windows2056 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 04/10/2013, 13h51

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