无法在ListView中的多个位置添加节标题

时间:2015-02-03 12:40:59

标签: android listview android-listview

我遇到的问题是我的列表视图中的节标题放在多个位置上。

这是我的代码,

告诉适配器有两种类型,

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public int getItemViewType(int position) {
    if (position == MainClass.addHeader) {
        return 0;
    } else {
        return 1;
    }
}

适配器的getView方法,

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    if (position == MainClass.addHeader) {

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.heads, null);
        }

    } else {
        // Normal views are handled by the adapter
        convertView = super.getView(position, convertView, parent);

    }
    return convertView;
}

现在的问题是,静态变量MainClass.addHeader的值最初为0,因此节标题显示在位置0,这是正确的。 但是当我滚动列表视图时,MainClass.addHeader的值会多次更改,每次更改MainClass.addHeader的值时,都会在该位置添加节标题。但问题是当出现在新位置时,节标题从先前的位置消失。

例如,

最初,MainClass.addHeader的值为0,部分标题显示在该位置。

我向下滚动,MainClass.addHeader的值更改为8,部分标题显示在该位置,但从0位置开始消失。

如何让我的章节标题不会从以前的位置消失?

1 个答案:

答案 0 :(得分:0)

标题始终位于位置0.如果要将不同的元素添加到列表中的其他位置,则应该只创建一个自定义适配器,然后以这种方式调整该特定元素。

最重要的是,标题设计为保留在列表的顶部(您可以在底部使用页脚),而不是设计为插入列表中间。您试图错误地使用它。

如果您正在寻找“Sticky Header” - 即。即使滚动列表,屏幕上仍会保留一些内容,您应该创建一个独特的视图,并将其放在布局中的ListView上方。您不应该为此使用列表标题,因为它专门用于滚动列表。