您好我正在为listView添加节标题,网上的方法很少。由于我使用simpleCursorAdapter来管理我的listView,我采用了phil bogle的方法。 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)
正确的输出应该是:
2010年9月5日,星期日
的 112个
120
但是当我向上滚动时,setViewValue首先调用120并与preDate(上面显示)进行比较,它变为:
2010年9月5日,星期日
112个
2010年9月5日,星期日中
120
那么如何在创建标题后修改节标题?为什么在滚动时调用setViewBinder?有什么建议吗?谢谢!
答案 0 :(得分:3)
您还可以在这里查看非常简单的项目:http://code.google.com/p/android-section-list/。灵感来自iOS的部分列表(在iOS中开箱即用)。
答案 1 :(得分:2)
在此处查看带有部分标题小部件的ListView,这可能会对您有所帮助。它的工作方式与默认的“联系人”应用程序类似。
答案 2 :(得分:0)
那么如何在创建标题后修改节标题呢?
我想,isHeaderVisible()
正常工作。我可以说,这就是你的问题所在。
为什么在滚动时调用了setViewBinder?
因为行在滚动时会被回收。