需要帮助!
如何在游标适配器中实现粘性列表标题。
我想要一个像这样的列表
标题:2014年12月
孩子:day1 3000Kyats
...
孩子:day30 4000Kyats
标题:2015年1月
孩子:day1 10000Kyats
.....
孩子:day30 4000Kyats
标题:Feburay 2015
孩子:day1 10000Kyats
.....
孩子:day28 4000Kyats
查询
SELECT SUM(KeyAmount), DAY(KeyDate), MONTHNAME(MONTH(KeyDate)), YEAR(KeyDate)
FROM tbl
GROUP BY DAY(KeyDate), MONTH(KeyDate), YEAR(KeyDate)
ORDER BY YEAR(KeyDate), MONTH(KeyDate), DAY(KeyDate)
查询结果
Amount Day Month Year
20 29 December 2014
44 30 December 2014
25 1 January 2015
目标是用标题显示每日收入的总和。在一个标题下,将有该月的日期列表。 使用基座适配器很容易,但我担心它会很慢。我如何使用游标适配器?有办法吗?
由于
答案 0 :(得分:1)
如果光标按字母顺序排序,则需要使用cursor.moveToPisition(i);
:
public class MyAdapter extends CursorAdapter implements StickListHeadersAdapter{
public long getHeaderId(int i){
mCursor.moveToPosition(i);
int j = mCursor.getColumnIndex("Column_of_name");
String name = mCursor.getString(j);
return name.charAt(0);
}
public View getHeaderView(int i, View convertView, ViewGroup viewGroup){
HeaderViewHolder holder;
if (convertView != null){
holder = (HeaderViewHolder) convertView.getTag();
}
else{
convertView = LayoutInflater.from(mContext).inflate(R.layout.list_header_tree, viewGroup, false);
holder = new HeaderViewHolder(convertView);
convertView.setTag(holder);
}
mCursor.moveToPosition(i);
int j = mCursor.getColumnIndex("Column_of_name");
String name = mCursor.getString(j);
String headerText = "" + name.charAt(0);
holder.tvHeader.setText(headerText);
return convertView;
}
//Using butterknife so HeaderViewHolder:
static class HeaderViewHolder {
@InjectView(R.id.tvHeader) TextView tvHeader;
public HeaderViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
}
答案 1 :(得分:0)
如果您没有使用RecyclerView
,请使用此library并覆盖getHeaderId(int position)
,并将月份数据从游标适配器发出。
我认为它可以解决您的需求。