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 :

Ajouter éléments et écouteurs d'évènements à un BaseAdapter


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Points : 55
    Points
    55
    Par défaut Ajouter éléments et écouteurs d'évènements à un BaseAdapter
    Hello, le tutoriel suivant semble asser interessant pour la creation d'item avec plusieurs champs (remplissage d'une vue par categorie) et il est asser dynamique je pense pour pouvoir y setter les valeurs d'un webservice :

    http://jsharkey.org/blog/2008/08/18/...in-android-09/

    Voici donc mon activity :

    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
    public class ListSample_category3 extends Activity 
    {
     
    	public final static String ITEM_TITLE = "title";
    	public final static String ITEM_COMPANY= "company";
    	public final static String ITEM_DATE = "availabledate";
     
    	public Map<String,?> createItem(String title, String company, String date) 
    	{
    		Map<String,String> item = new HashMap<String,String>();
    		item.put(ITEM_TITLE, title);
    		item.put(ITEM_COMPANY, company);
    		item.put(ITEM_DATE, date);
    		return item;
    	}
     
    	@Override
    	public void onCreate(Bundle bundle) 
    	{
    		super.onCreate(bundle);
     
    		List<Map<String,?>> security = new LinkedList<Map<String,?>>();
    		security.add(createItem("Remember passwords", "Cisco", "2012-02-10"));
    		security.add(createItem("Clear passwords", "Microsoft", "2012-02-10"));
    		security.add(createItem("Show security warnings", "Apple", "2012-02-10"));
     
    		// create our list and custom adapter
    		SeparatedListAdapter adapter = new SeparatedListAdapter(this);
     
    		adapter.addSection("Categorie 1", new ArrayAdapter<String>(this,
    			R.layout.list_item_category3, new String[] { "First item", "Item two" }));
     
    		adapter.addSection("Categorie 2", new SimpleAdapter(this, security, R.layout.list_complex_category3, 
    			new String[] { ITEM_TITLE, ITEM_COMPANY, ITEM_DATE }, new int[] { R.id.list_complex_title, R.id.list_complex_company, R.id.list_complex_date }));
     
    		ListView list = new ListView(this);
    		list.setAdapter(adapter);
    		this.setContentView(list);
     
    	}
    }
    Mon BaseAdapter :

    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
    public class SeparatedListAdapter extends BaseAdapter 
    {
    	public final Map<String,Adapter> sections = new LinkedHashMap<String,Adapter>();
    	public final ArrayAdapter<String> headers;
    	public final static int TYPE_SECTION_HEADER = 0;
     
    	public SeparatedListAdapter(Context context) 
    	{
    		headers = new ArrayAdapter<String>(context, R.layout.list_header_category3);
    	}
     
    	public void addSection(String section, Adapter adapter) 
    	{
    		this.headers.add(section);
    		this.sections.put(section, adapter);
    	}
     
    	public Object getItem(int position) 
    	{
    		for(Object section : this.sections.keySet()) 
    		{
    			Adapter adapter = sections.get(section);
    			int size = adapter.getCount() + 1;
     
    			// check if position inside this section 
    			if(position == 0) return section;
    			if(position < size) return adapter.getItem(position - 1);
     
    			// otherwise jump into next section
    			position -= size;
    		}
    		return null;
    	}
     
    	public int getCount() 
    	{
    		// total together all sections, plus one for each section header
    		int total = 0;
    		for(Adapter adapter : this.sections.values())
    			total += adapter.getCount() + 1;
    		return total;
    	}
     
    	public int getViewTypeCount() 
    	{
    		// assume that headers count as one, then total all sections
    		int total = 1;
    		for(Adapter adapter : this.sections.values())
    			total += adapter.getViewTypeCount();
    		return total;
    	}
     
    	public int getItemViewType(int position) 
    	{
    		int type = 1;
    		for(Object section : this.sections.keySet()) 
    		{
    			Adapter adapter = sections.get(section);
    			int size = adapter.getCount() + 1;
     
    			// check if position inside this section 
    			if(position == 0) return TYPE_SECTION_HEADER;
    			if(position < size) return type + adapter.getItemViewType(position - 1);
     
    			// otherwise jump into next section
    			position -= size;
    			type += adapter.getViewTypeCount();
    		}
    		return -1;
    	}
     
    	public boolean areAllItemsSelectable() 
    	{
    		return false;
    	}
     
    	public boolean isEnabled(int position) 
    	{
    		return (getItemViewType(position) != TYPE_SECTION_HEADER);
    	}
     
    	public View getView(int position, View convertView, ViewGroup parent) 
    	{
    		int sectionnum = 0;
    		for(Object section : this.sections.keySet()) {
    			Adapter adapter = sections.get(section);
    			int size = adapter.getCount() + 1;
     
    			// check if position inside this section 
    			if(position == 0) return headers.getView(sectionnum, convertView, parent);
    			if(position < size) return adapter.getView(position - 1, convertView, parent);
     
    			// otherwise jump into next section
    			position -= size;
    			sectionnum++;
    		}
    		return null;
    	}
     
    	public long getItemId(int position) 
    	{
    		return position;
    	}
    }
    Voici les 3 fichiers xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- list_header.xml -->
    <TextView
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:id="@+id/list_header_title"
    	android:layout_width="fill_parent" 
    	android:layout_height="wrap_content"
    	android:paddingTop="2dip"
    	android:paddingBottom="2dip"
    	android:paddingLeft="5dip"
    	style="?android:attr/listSeparatorTextViewStyle" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!-- list_item.xml -->
    <TextView
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:id="@+id/list_item_title"
    	android:layout_width="fill_parent" 
    	android:layout_height="fill_parent"
    	android:paddingTop="10dip"
    	android:paddingBottom="10dip"
    	android:paddingLeft="15dip"
    	android:textAppearance="?android:attr/textAppearanceLarge"
    	/>
    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
    <!-- list_complex.xml -->
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:orientation="vertical"
    	android:paddingTop="10dip"
    	android:paddingBottom="10dip"
    	android:paddingLeft="15dip"
    	>
    	<TextView
    		android:id="@+id/list_complex_title"
    		android:layout_width="fill_parent"
    		android:layout_height="wrap_content"
    		android:textAppearance="?android:attr/textAppearanceLarge"
    		/>
    	<TextView
    		android:id="@+id/list_complex_caption"
    		android:layout_width="fill_parent"
    		android:layout_height="wrap_content"
    		android:textAppearance="?android:attr/textAppearanceSmall"
    		/>
    </LinearLayout>
    Mais le probleme auquel je me pose actuellement est de rajouter a cette activite des elements ou des ecouteurs d'evenements: un button et un evenement OnClick sur chaque item

    Quelqu'un pourrais t'il m'aiguiller ?

  2. #2
    Membre du Club
    Homme Profil pro
    Cisco
    Inscrit en
    Juillet 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Cisco
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 71
    Points : 55
    Points
    55
    Par défaut
    Pour gerer le click sur les elements j'ai finalement simplement fait ceci dans mon activity : ListSample_category3 :

    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
    // create ListView
    		ListView list = new ListView(this);
     
    		// OnItemClickListener on all items
    		OnItemClickListener listener = new OnItemClickListener()
    	    {
    	    	  public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    	    	  {
    	    		Intent intent_to_main = new Intent(ListSample_category3.this, UserScreen.class);
    	  			startActivity(intent_to_main);
    	    	  }
    	    };
    		list.setOnItemClickListener(listener);
    	    list.setItemsCanFocus(true);
     
    	    list.setAdapter(adapter);
    		this.setContentView(list);
    Mais le probleme d'ajouter un simple bouton tout en haut de mes items se pose encore pour moi , personne ne connait les BaseAdapter ou quoi?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Citation Envoyé par eento Voir le message
    Mais le probleme d'ajouter un simple bouton tout en haut de mes items se pose encore pour moi , personne ne connait les BaseAdapter ou quoi?
    Tout en haut de la listView ou en haut de chaque item ?
    1) C'est pas dans le BaseAdapter mais dans l'Activity qu'il faut activer les listeners
    2) Tu dois ajouter les listeners dans ton getView() après avoir inflate le layout d'un item.

    Par ailleurs, je vois que le retour de ta fonction getView() retourne null... où sont les appels à inflate(), les binders etc ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Domdocument load html, ajouter éléments valides html (xmlns ?)
    Par BobLunique dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/11/2009, 15h34
  2. ajouter élément XML dans fichier existant DOM
    Par Hyst76 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 15/10/2007, 18h27
  3. Ajout éléments dans une zone de liste
    Par tabtab dans le forum IHM
    Réponses: 15
    Dernier message: 01/10/2007, 08h39
  4. ajout éléments dans une balise select
    Par wehtam dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h03
  5. [JDOM] Ajout élément dans fichier XML
    Par delinot dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 18/07/2005, 11h10

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