Aller au contenu

Probleme Ajout Button avec BaseAdapter


eento

Recommended Posts

Posté(e)

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?

Posté(e)

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...

Archivé

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

×
×
  • Créer...