Aller au contenu

Problème ExpandableListView


captainbiceps

Recommended Posts

Bonjour a tous, je me lance dans le développement Android et pour le moment j'essaye d'afficher une liste à plusieurs niveau avec un ExpandableListView. Le programme se découpe pour l'instant comme ça, j'ai mon accueil avec plusieurs boutons puis lorsque l'on clique sur le bouton du haut on ouvre une nouvelle activité qui si constitue de deux onglet, l'ExpandableListView se trouve dans le première onglet. Je vous met donc l'erreur que j'ai ainsi que le code de cette activité. A préciser que dans l'affichage de cette liste le premier niveau correspond à une catégorie (d'où la classe Categorie) et le deuxième niveau correspond à un lieux (avec la classe lieux).

Erreur :

erreurd.png

Code :

OngletRechercherListe.java

package com.example.lr_walk;

import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.widget.ExpandableListView;

public class OngletRechercherListe extends Activity {

private ExpandableListView maListeView;
ArrayList<Categorie> maListe = new ArrayList<Categorie>();

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_onglet_rechercher_liste);

	maListeView = (ExpandableListView)findViewById(R.id.liste_view);

	//Permet de remplir la liste
	Categorie categorie1 = new Categorie("Restaurant Universitaire");
	Categorie categorie2 = new Categorie("Mutuelle étudiante");	
	Lieux lieux1 = new Lieux(categorie1,"Ru République","12 rue de coureilles","17000","La Rochelle",1);
	Lieux lieux2 = new Lieux(categorie1,"Ru Anthinée","20 rue de l'iut","17000","La Rochelle",2);
	Lieux lieux3 = new Lieux(categorie2,"SMECO","45 rue des sciences","17000","La Rochelle",3);
	Lieux lieux4 = new Lieux(categorie2,"LMDE","21 rue Victor Hugo","17000","La Rochelle",4);	  
	ArrayList<Lieux> liste1 = new ArrayList<Lieux>();
	ArrayList<Lieux> liste2 = new ArrayList<Lieux>();
	liste1.add(lieux1);
	liste1.add(lieux2);
	liste2.add(lieux3);
	liste2.add(lieux4);
	categorie1.setListe(liste1);
	categorie2.setListe(liste2);
	maListe.add(categorie1);
	maListe.add(categorie2);

	LieuxAdapter monAdapter = new LieuxAdapter(this, maListe);
	maListeView.setAdapter(monAdapter);

}

}

Categorie.java

package com.example.lr_walk;

import java.util.ArrayList;

public class Categorie{
private String sonNom;
private ArrayList<Lieux> saListe;

public Categorie(String unNom)
{
super();
this.sonNom = unNom;
this.saListe = new ArrayList<Lieux>();
}

public String getNom() {
return sonNom;
}

public void setNom(String unNom) {
this.sonNom = unNom;
}

public ArrayList<Lieux> getListe() {
return saListe;
}

public void setListe(ArrayList<Lieux> uneListe) {
this.saListe = uneListe;
}

}

Lieux.java

package com.example.lr_walk;

class Lieux {
private Categorie saCategorie;
private String sonNom;
private String sonAdresse;
private String sonCodePostale;
private String saVille;
private int sonId;

public Lieux(Categorie uneCategorie, String unNom, String uneAdresse, String unCodePostale, String uneVille, int unId)
{
super();
this.saCategorie = uneCategorie;
this.sonNom = unNom;
this.sonAdresse = uneAdresse;
this.sonCodePostale = unCodePostale;
this.saVille = uneVille;
this.sonId = unId;
}

public Categorie getCategorie()
{
return saCategorie;
}

public void getCategorie(Categorie uneCategorie)
{
saCategorie = uneCategorie;
}

public String getSonNom()
{
return sonNom;
}

public void setSonNom(String sonNom)
{
this.sonNom = sonNom;
}

public String getSonAdresse()
{
return sonAdresse;
}

public void setSonAdresse(String sonAdresse)
{
this.sonAdresse = sonAdresse;
}

public String getSonCodePostale()
{
return sonCodePostale;
}

public void setSonCodePostale(String sonCodePostale)
{
this.sonCodePostale = sonCodePostale;
}

public String getSaVille()
{
return saVille;
}

public void setSaVille(String saVille)
{
this.saVille = saVille;
}

public int getId()
{
return sonId;
}

public void setId(int unId)
{
this.sonId = unId;
}
}

LieuxAdapter.java

package com.example.lr_walk;

import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class LieuxAdapter extends BaseExpandableListAdapter{

private Context monContext;
private ArrayList<Categorie> maListeCategorie;
private LayoutInflater monLayoutInflater;

public LieuxAdapter(Context unContext, ArrayList<Categorie> uneListeCategorie)
{
this.monContext = unContext;
this.maListeCategorie = uneListeCategorie;
monLayoutInflater = LayoutInflater.from(monContext);
}

public boolean areAllItemsEnabled()
{
return true;
}

public Object getChild(int unePosition, int enfantPosition)
{
return maListeCategorie.get(unePosition).getListe().get(enfantPosition);
}

public long getChildId(int groupPosition, int childPosition)
{
return childPosition;
}

public View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent)
{
final Lieux unLieux = (Lieux) getChild(groupPosition,childPosition);

ChildViewHolder unChildViewHolder;

if(convertView == null)
{
unChildViewHolder = new ChildViewHolder();
convertView = monLayoutInflater.inflate(R.layout.itemcategorie,null);
unChildViewHolder.sonTextViewChild = (TextView) convertView.findViewById(R.id.textViewNom);
convertView.setTag(unChildViewHolder);
}
else
{
unChildViewHolder = (ChildViewHolder) convertView.getTag();
}
unChildViewHolder.sonTextViewChild.setText(unLieux.getSonNom());
return convertView;
}

public int getChildrenCount(int groupPosition) {
return maListeCategorie.get(groupPosition).getListe().size();
}

public Object getGroup(int groupPosition) {
return maListeCategorie.get(groupPosition);
}

public int getGroupCount() {
return maListeCategorie.size();
}

public long getGroupId(int groupPosition) {
return groupPosition;
}

public View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent)
{
GroupViewHolder monGHolder;
Categorie maCategorie = (Categorie) getGroup(groupPosition);

if(convertView == null)
{
monGHolder = new GroupViewHolder();
convertView = monLayoutInflater.inflate(R.layout.itemcategorie, null);
monGHolder.sonTextViewGroup = (TextView) convertView.findViewById(R.id.nom_groupe);
convertView.setTag(monGHolder);
}
else
{
monGHolder = (GroupViewHolder)convertView.getTag();
}
monGHolder.sonTextViewGroup.setText(maCategorie.getNom());
return convertView;
}

public boolean hasStableIds() {
return true;
}

public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}

public class GroupViewHolder
{
public TextView sonTextViewGroup;
}

public class ChildViewHolder
{
public TextView sonTextViewChild;
}

}

activity_onglet_rechercher_liste.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ExpandableListeView
	android:id="@+id/liste_view"
	android:layout_width="fill_parent"
 android:layout_height="fill_parent" >
</ExpandableListeView>

</LinearLayout>

itemcategorie.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/nom_groupe"
android:text="Groupe"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:textAppearance="?android:attr/textAppearanceLarge"/>

itemlieux.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/textViewNom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

</LinearLayout>

Si vous avez besoin d'autre parties du code [color=red]n'hésitez[/color] pas. Cordialement :)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...