Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Probleme Ajout Bouton

    4 août 2012 à 15:27:45

    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);[/code]
    
    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="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" />
    



    <!-- 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"
    	/>
    


    <!-- 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 un Simple Button en haut de tout mes item :-°

    Sauriez vous comment proceder?
    • Partager sur Facebook
    • Partager sur Twitter
      4 août 2012 à 19:18:34

      Bonjour,

      Je te conseil de concevoir l'interface IHM de ton activité avec un fichier XML (comme tu le fais pour les items). Ainsi, tu pourras y mettre un premier élément Button et un second élement ListView. :)
      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.

      [Android] Probleme Ajout Bouton

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown