Android 使用ArrayAdapter在列表视图中添加标题

Android 使用ArrayAdapter在列表视图中添加标题,android,listview,Android,Listview,我正在尝试使用阵列适配器显示listview。我从数据库中获取数组 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, ArrayofName); ListView myListView = (ListView) ll.findViewById(R.id.list1); myListView.setAda

我正在尝试使用阵列适配器显示listview。我从数据库中获取数组

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
   android.R.layout.simple_list_item_1, ArrayofName);
ListView myListView = (ListView) ll.findViewById(R.id.list1);
myListView.setAdapter(adapter);
ArrayAdapter=新的ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,ArrayofName);
ListView myListView=(ListView)ll.findViewById(R.id.list1);
myListView.setAdapter(适配器);
现在我想使用标题对它们进行分类。我试图添加另一个阵列适配器。但它对标题不起作用

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, ArrayofName);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, ArrayofName);
ListView myListView = (ListView) ll.findViewById(R.id.list1);
myListView.addHeaderView(adapter1);
myListView.setAdapter(adapter);
ArrayAdapter=新的ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,ArrayofName);
ArrayAdapter适配器1=新的ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,ArrayofName);
ListView myListView=(ListView)ll.findViewById(R.id.list1);
myListView.addHeaderView(适配器1);
myListView.setAdapter(适配器);
我怎样才能让它工作

附言:我正在使用一个片段

您想添加标题(以复数形式),但您正在调用mylistview.AddHeaderView(以单数形式)

该方法接受显示在第一项“上方”的单个视图。您可以在运行时膨胀资源或创建视图,将其添加到列表的顶部

如果要添加多个标题(如节标题中的标题),则必须创建一个自定义arrayadapter,以便在正确的位置为您插入这些标题


此处可以找到一个示例

按照您希望显示的顺序对适配器中的项目进行排序,项目之间有标题(SectionItem)

创建Person类和SectionItem类

适配器的示例,每个名称的第一个字母包含人员和部分:

- A (SectionItem)
- Adam (Person)
- Alex (Person)
- Andre (Person)
- B (SectionItem)
- Ben (Person)
- Boris (Person)
...
在adapter.getViewTypeCount中返回2。 在adapter.getItemViewType(位置)中,SectionItems返回0,Person返回1。 在getView(…)中,返回SectionItem或Person的视图

例如:

public class SectionedAdapter extends BaseAdapter {

    ....

    @Override
    public int getViewTypeCount() {
        return 2; // The number of distinct view types the getView() will return.
    }

    @Override
    public int getItemViewType(int position) {
        if (getItem(position) instanceof SectionItem){
            return 0;   
        }else{
            return 1;
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Object item = getItem(position);
        if (item instanceof SectionItem) {
            if (convertView == null) {
                convertView = getInflater().inflate(R.layout.section, null);
            }
            // Set the section details.
        } else if (item instanceof Person) {
            if (convertView == null) {
                convertView = getInflater().inflate(R.layout.person, null);
            }
            // Set the person details.
        }
        return convertView;
    }
}