我尝试使用数组适配器显示列表视图。我从数据库中获取数组。
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<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);
我怎样才能让它发挥作用?
PS:我正在使用片段。
答案 0 :(得分:9)
按照要显示的顺序对适配器中的项目进行排序,并在项目之间使用标题(SectionItem)。
创建一个Person类和一个SectionItem类。
名称的第一个字母包含人员和部分的适配器示例:
- A (SectionItem)
- Adam (Person)
- Alex (Person)
- Andre (Person)
- B (SectionItem)
- Ben (Person)
- Boris (Person)
...
在adapter.getViewTypeCount中返回2。 在adapter.getItemViewType(position)中,SectionItems返回0,Persons返回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;
}
}
答案 1 :(得分:1)
您想要添加标题(如复数形式),但您正在调用mylistview.AddHeaderView(如单数形式)
该方法接受上面显示的单个视图&#39;你的第一个项目。您可以在运行时对资源进行充气或创建视图,以将其添加到列表顶部。
如果你想添加多个标题,比如在标题标题中,你必须创建一个自定义数组适配器,在适当的位置为你插入这些标题。
可在此处找到一个示例How to add section separators / dividers to a ListView?