eento Posté(e) 3 août 2012 Share Posté(e) 3 août 2012 Bonjour a tous, mon but etant d'afficher dans une vue, une liste d'item par categorie. Peu de contenu etant present sur la toile je me pose le probleme suivant : Voici donc mon activity : 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 })); // 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? :oops: list.setAdapter(adapter); this.setContentView(list); } } Mon BaseAdapter : 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 : <!-- list_header.xml --> <TextView xmlns:android="[url="http://schemas.android.com/apk/res/android"]http://schemas.andro...pk/res/android"[/url] 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" /> <!-- list_item.xml --> <TextView xmlns:android="[url="http://schemas.android.com/apk/res/android"]http://schemas.andro...pk/res/android"[/url] 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" /> <!-- list_complex.xml --> <LinearLayout xmlns:android="[url="http://schemas.android.com/apk/res/android"]http://schemas.andro...pk/res/android"[/url] 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 un Simple Button en haut de tout mes item :-° Sauriez vous comment proceder? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Substitut Posté(e) 7 août 2012 Share Posté(e) 7 août 2012 Il faut que tu redéfinisse la méthode getView de ton base adapter. En retournant une view que tu as inflaté depuis un fichier xml. Si j'ai bien compris le problème... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.