嗨,我正在为我的listView添加节标题,在web上很少有方法。因为我使用simpleCursorAdapter来管理我的listView,所以我采用了phil的方法。http://thebogles.com/blog/2010/02/section-headers-for-android-listviews/
错误发生在代码的这一部分:
listAdapter.setViewBinder( new SimpleCursorAdapter.ViewBinder()
{
public boolean setViewValue(View view, Cursor cursor, int
columnIndex)
{
if (columnIndex == nDateIndex) {
if (isHeaderVisible(cursor)) {
view.setVisibility(View.VISIBLE);
prevDate = dateString;
((TextView) view).setText(dateString);
} else {
((TextView) view).setText("");
view.setVisibility(View.GONE);
}
return true;
}
return false;
}
});
这是LogCat展示了它们如何进行比较,而我向上滚动列表:
09-06 11:06:43.460: INFO/System.out(563): Sun, 05 Sep 2010 11:41:53 (dateString)
09-06 11:06:43.460: INFO/System.out(563): Wed, 01 Sep 2010 21:58:06 (preDate)
09-06 11:06:43.460: INFO/System.out(563): 120.0 (record)
09-06 11:06:43.820: INFO/System.out(563): Sun, 05 Sep 2010 17:47:26 (dateString)
09-06 11:06:43.820: INFO/System.out(563): Sun, 05 Sep 2010 11:41:53 (preDate)
09-06 11:06:43.820: INFO/System.out(563): 112.0 (record)
正确的输出应该是:
Sun,2010年9月5日
112
**120**
但当我向上滚动时,setViewValue首先调用120并与preDate(如上图所示)进行比较,结果如下:
Sun,2010年9月5日
**112**
**Sun, 05 Sep 2010**
**120**
那么,在创建标头之后,如何使节标头修复呢?为什么在滚动时调用setViewBinder?对此有什么建议吗?谢谢!
发布于 2011-06-13 00:09:17
您还可以在这里查看非常简单的项目:http://code.google.com/p/android-section-list/。灵感来自iOS的章节列表(在iOS中是从盒子里拿出来的)。
发布于 2011-03-29 08:57:30
请在这里看到带有部分标题的ListView小部件,这可能会对您有所帮助。它的工作原理类似于默认的联系人应用程序。
http://code.google.com/p/android-amazing-listview/
发布于 2010-09-06 09:42:11
,那么在创建标头之后,如何使节标头得到修正呢?
让isHeaderVisible()
正常工作吧,我想。据我所知,这就是你的问题所在。
为什么在滚动时调用setViewBinder?
因为行在滚动时会被回收。
https://stackoverflow.com/questions/3648840
复制相似问题