我有ListView
,显示数据库中的项目列表。所以我使用SimpleCursorAdapter
。
if (mDiscussionsCursor != null && mDiscussionsCursor.getCount() > 0) {
mAdapter = new SimpleCursorAdapter(mContext, R.layout.home_discussion_row, mDiscussionsCursor, FROM, TO, 0);
mAdapter.setViewBinder(VIEW_BINDER);
setAdapter(mAdapter);
setOnItemClickListener(this);
}
这些物品按时间顺序排列。我想在每天之间设置一条分隔线,即显示2013年5月1日的所有商品,然后是2013年5月2日的标题,然后是当天的所有商品等。
我假设我可以带我的Cursor
并将其复制到Array,其中包含代表日期标题的特殊单元格,然后使用此处显示的方法:http://android.amberfog.com/?p=296
然而,这在空间和时间上对我来说都是非常浪费的练习,我想知道你可能会想到更聪明的东西。提前谢谢。
答案 0 :(得分:1)
您可以尝试对SimpleCursorAdapter进行子类化,并从教程中重写其关联成员
getItemViewType
getViewTypeCount
getView
如果你看一下SimpleCusrsorAdapter和ListAdapter(ListView适配器)的继承层次结构,你会发现它们都是BaseAdapter的子类,因此这是可能的原因。
http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html http://developer.android.com/reference/android/widget/ListAdapter.html http://developer.android.com/reference/android/widget/BaseAdapter.html
修改强>
它可能不像简单的子类化和覆盖一样切割和干燥。您可能还需要将CursorAdapter父类中的一些代码合并到您的替代中,并且
bypass calling super.method().
例如,这里是CursorAdapter.java的getView覆盖,你可能需要
explicitly call bindView()
(参考:http://androidxref.com/4.0.3_r1/xref/frameworks/base/core/java/android/widget/CursorAdapter.java
public View getView(int position, View convertView, ViewGroup parent) {
if (!mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
}
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
View v;
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
bindView(v, mContext, mCursor);
return v;
}
要使用外部参照源代码存储库,请转到
选择您的api版本,然后在
中“完整搜索”
型
<强> ObjectName.java 强>
并在右侧列表中
“在项目中”
向下滚动并选择
<强> “框架”强>
它搜索(我觉得这是获得你想要的最直接有效的方法)。