我遇到的问题是我的列表视图中的节标题放在多个位置上。
这是我的代码,
告诉适配器有两种类型,
@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
位置开始消失。
如何让我的章节标题不会从以前的位置消失?
答案 0 :(得分:0)
标题始终位于位置0.如果要将不同的元素添加到列表中的其他位置,则应该只创建一个自定义适配器,然后以这种方式调整该特定元素。
最重要的是,标题设计为保留在列表的顶部(您可以在底部使用页脚),而不是设计为插入列表中间。您试图错误地使用它。
如果您正在寻找“Sticky Header” - 即。即使滚动列表,屏幕上仍会保留一些内容,您应该创建一个独特的视图,并将其放在布局中的ListView上方。您不应该为此使用列表标题,因为它专门用于滚动列表。