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 :

ListView et sélection par défaut


Sujet :

Composants graphiques Android

  1. #1
    Membre éprouvé

    Inscrit en
    Décembre 2009
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 146
    Points : 900
    Points
    900
    Par défaut ListView et sélection par défaut
    Bonjour,

    Je suis en train de réaliser une liste (ListView) comme j'en ai déjà fais 1000 fois (peut être pas mais bon ).

    J'applique un selector aux éléments de ma listview qui change de couleur de fond quand un élément est sélectionné.

    Cependant, j'ai cherché partout, et impossible de trouver la façon de sélectionner un élément par défaut avec le selector qui est bien appliqué.

    Je sélectionne le premier élément dans la méthode onStart (oui en plus je suis dans un ListFragment), mais le background n'est pas changé.

    Après, lorsque je clique sur cette élément ou les autres, aucun problème, c'est vraiment la sélection par défaut.

    J'ai essayé aussi une méthode qui consiste à faire joujou à la première initialisation de l'adapter, mais c'est déjà très moche et en plus la couleur de fond change pour des éléments plus bas dans la liste (la 'View' n'étant pas totalement réinitialisé).

    Quelqu'un aurait-il déjà réussi à faire cela ?

    Merci d'avance pour vos réponses.

  2. #2
    Membre éprouvé

    Inscrit en
    Décembre 2009
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 146
    Points : 900
    Points
    900
    Par défaut
    Un petit peu de code pour mettre mon exemple "en image" :

    MainActivity.java
    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
    package com.example.test;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ListView;
     
    public class MainActivity extends Activity
    {
    	ListView listView;
     
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            String[] stringsArray = new String[30];
            for (int i = 0; i < 30; ++i)
            	stringsArray[i] = Integer.toString(i);
            listView = (ListView)findViewById(R.id.listTest);
     
            TestAdapter adapter = new TestAdapter(stringsArray);
            listView.setAdapter(adapter);
            listView.setOnItemClickListener(new OnItemClickListener()
            {
    			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
    			{
    				arg1.setSelected(true);
    			}
            });
        }
     
    }
    TestAdapter.java
    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
    package com.example.test;
     
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
     
    public class TestAdapter extends BaseAdapter
    {
    	String[] data;
    	boolean firstInit = true;
     
    	public TestAdapter(String[] array)
    	{
    		data = array;
    	}
     
    	public int getCount()
    	{
    		return data.length;
    	}
     
    	public Object getItem(int arg0)
    	{
    		return data[arg0];
    	}
     
    	public long getItemId(int arg0)
    	{
    		return arg0;
    	}
     
    	public View getView(int position, View arg1, ViewGroup arg2)
    	{
    		View view = arg1;
    		if (view == null)
    		{
    			LayoutInflater layoutInflater = (LayoutInflater) arg2.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    			view = layoutInflater.inflate(R.layout.row, null);
    		}
    		((TextView)view.findViewById(R.id.rowText)).setText(data[position]);
    		if (firstInit && position == 0)
    		{
    			view.setSelected(true);
    			firstInit = false;
    		}
    		return view;
    	}
     
    }
    activity_main.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <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"
        tools:context=".MainActivity" >
     
        <ListView 
            android:id="@+id/listTest"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></ListView>
     
    </RelativeLayout>
    row.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?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"
        android:background="@drawable/list_selector">
        <TextView 
            android:id="@+id/rowText"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    </RelativeLayout>
    list_selector.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:state_focused="true"
            android:drawable="@android:color/holo_blue_dark"/>
        <item
            android:state_selected="true"
            android:drawable="@android:color/holo_blue_dark"/>
    </selector>
    Lancement sur l'émulateur, aucune sélection faite par défaut, mais la sélection est bien visible par la suite.

  3. #3
    Membre éprouvé

    Inscrit en
    Décembre 2009
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 146
    Points : 900
    Points
    900
    Par défaut
    Réponse à moi même : performItemClick dans le onStart.

Discussions similaires

  1. [XL-2007] Listview éviter sélection par défaut
    Par danisoaz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2011, 10h47
  2. Réponses: 2
    Dernier message: 03/05/2007, 16h50
  3. [html:radio] sélection par défaut
    Par crocodingo dans le forum Struts 1
    Réponses: 5
    Dernier message: 02/05/2007, 14h09
  4. Réponses: 3
    Dernier message: 31/08/2006, 00h38
  5. Couleur de sélection par défaut
    Par sicard_51 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/04/2003, 23h35

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