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 :

ToggleButton dans une ListView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Par défaut ToggleButton dans une ListView
    Bonjour à tous, voilà je vous expose mon problème.

    J'aimerais remplir une listview avec des ToggleButton, mais j'aimerais que mes ToggleButton soient présents seulement dans les dernières lignes de ma listview.

    Voici mon code test trouvé sur internet:
    Ma listView:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
     
        <ListView
            android:id="@+id/lv_countries"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            tools:context=".MainActivity" />
     
    </RelativeLayout>
    Mes items:

    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
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
     
        <TextView
            android:id="@+id/tv_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:paddingLeft="5dp" />
     
            <ToggleButton
                android:id="@+id/tgl_status"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:focusable="false"
                android:clickable="false" />
    </RelativeLayout>
    Et mon code:
    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
    String[] countries = new String[] {
        	     "India",
        	        "Pakistan",
        	        "Sri Lanka",
        	        "China",
        	        "Bangladesh",
        	        "Nepal",
        	        "Afghanistan",
        	        "North Korea",
        	        "South Korea",
        	        "Japan"
        };
     
        public boolean[] status = {
        			true,
        	        false,
        	        false,
        	        false,
        	        false,
        	        false,
        	        false,
        	        false,
        	        false,
        	        false
        };
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		ToggleButton tgl=(ToggleButton) findViewById(R.id.tgl_status);
     
    		  if(savedInstanceState!=null){
    	            status = savedInstanceState.getBooleanArray("status");
    	        }
     
    	        ListView lvCountries = (ListView) findViewById(R.id.lv_countries);
    	        List<HashMap<String,Object>> aList = new ArrayList<HashMap<String,Object>>();
     
    	        for(int i=0;i<10;i++){
    	            HashMap<String, Object> hm = new HashMap<String,Object>();
    	            hm.put("txt", countries[i]);
    	           	           hm.put("stat",status[i]);
    	            aList.add(hm);
    	        }      
    	        String[] from = {"txt","stat" };  
    	        int[] to = { R.id.tv_item, R.id.tgl_status};
    	        SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.lv_layout, from, to);
    	        lvCountries.setAdapter(adapter);
    	}
    Disont que j'aimerais que les deux dernières lignes de ma listview comporte un ToggleButton.

    Comment puis-je faire cela?

    J'ai bien essayé de modifier le code pour ne pas ajouter de toggleButton mais rien n'y fait il apparait dans toutes mes lignes :/.

    Merci d'avance

  2. #2
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Dans tous les cas, il faut passer par son propre Adapter....

    Solution 1 (plus "lightweight" pour l'UI):
    Modifier la fonction getViewTypeCount() pour renvoyer 2....
    getViewType() renverra 1 (pour le cas normal) et 2 (pour les deux dernières lignes)
    La fonction getView() fait le travail du "inflate" du layout voulu (avec ou sans toggle-button).

    Solution 2:
    Modifier getView() pour qu'il "cache" le toggle-button (setVisibility(View.GONE)) dans le cas ou on n'est pas dans les deux dernière ligne, et le montre (setVisibility(View.VISIBLE)) sinon.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 35
    Par défaut
    Merci nicroman, j'avais déjà essayé ta solution 2, mais au démarrage j'avais un problème, je vais essayer de voir pour la 1er .

Discussions similaires

  1. Lister les processus et les PID dans une listview .
    Par maxoudu328 dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 16/10/2005, 16h03
  2. [c#]Suppresion dans une listview
    Par onouiri dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/04/2005, 13h00
  3. Afficher un Hint dans une ListView
    Par Larion dans le forum C++Builder
    Réponses: 13
    Dernier message: 13/03/2005, 13h45
  4. [VB.NET] Objet .Tag dans une ListView
    Par Lois dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/10/2004, 16h35
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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