How to add multiple header views in a ListView

后端 未结 3 730
时光说笑
时光说笑 2021-02-04 18:35

I\'ve a custom adapter for my ListView I want to add project names as the headers to my work requests. Adding a single header works just fine but I\'m not sure how

3条回答
  •  一向
    一向 (楼主)
    2021-02-04 19:09

    I achieved multiple header scenario using custom Section Adapter which is originally coded by CommonsWare, you can make section within listivew, like Books, Games and etc. check out below code.

    Section Adapter:

    package com.medplan.db;
    
    import java.util.ArrayList;
    import java.util.List;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Adapter;
    import android.widget.BaseAdapter;
    
    
    
    
    abstract public class SectionedAdapter extends BaseAdapter {
    
        String TAG = "========SectionedAdapter============";
    
    abstract protected View getHeaderView(String caption,
                                          int index,
                                          View convertView,
                                          ViewGroup parent);
    
    private List
    sections=new ArrayList
    (); private static int TYPE_SECTION_HEADER=0; public SectionedAdapter() { super(); sections.clear(); } public void addSection(String caption, Adapter adapter) { sections.add(new Section(caption, adapter)); } public void clear() { sections.clear(); notifyDataSetChanged(); } public Object getItem(int position) { for (Section section : this.sections) { if (position==0) { return(section); } int size=section.adapter.getCount()+1; if (position

    Within Activity make Section adapter object,check out below code:

    final SectionedAdapter adapter =new SectionedAdapter()
                    {
    
                          protected View getHeaderView(String caption, int index, View convertView,ViewGroup parent) 
                          {
    
                            result=(TextView)convertView;
    
                            if (convertView==null) 
                            {
                              result=(TextView)getLayoutInflater().inflate(R.layout.section_header,null);
    
                            }
    
                            result.setText(caption);
                           // temp=caption;
                           // ind=index;
    
                            return(result);
                          }
                        };
    

    section_header.xml

    
    
    
    
    
    
    

    Within Activity add section as many as you want like below:

    Note: userPic & medPic are name of arraylist.

    adapter.addSection("section first", new EfficientAdapter(getApplicationContext(),usersPic)); 
    
    
    adapter.addSection("section second", new EfficientAdapter(getApplicationContext(),medPic));
    
    listview.setAdapter(adapter);
    

提交回复
热议问题