android - 使用 ArrayAdapter 在 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.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:我正在使用 fragment 。

最佳答案

按照您希望在项目之间显示标题 (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,Person 返回 1。 在 getView(...) 中返回 SectionItem 或 Person 的 View 。

例子:

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;
    }
}

关于android - 使用 ArrayAdapter 在 listView 中添加标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102519/

相关文章:

具有固定宽度列的 WPF TreeView

c# - 编辑项目模板中的文件上传

Android smoothScrollToPosition 位于顶部

android - 带有彩色行的 Mvvmcross ListView

android - Android 选项卡中的典型搜索、结果和详细信息工作流

java - 增加 HTTP 客户端超时

android - 如何制作按钮开/关音乐android

listview - 为什么 GridView.builder 返回高度扩展的元素,而 ListView.Seperated 返回正常高度的元素?

java - Android-我无法在第二个 Activity 上创建 ListView

安卓 : Floating Clickable Icon over Screen?