我试图显示绑定到我的ListView
的每一行的数据库值的小计。我不想将小计保留为数据库列,因此我试图在显示值时累计这些值。当然,这带来了一个显而易见的问题,就是如何处理滚动,这会显示并重新显示一个值,从而搞砸了运行的小计。在每个列表视图行上显示子汇总
详细说明,每个listview行有两个字段,一个值和一个小计。该值来自数据库行,小计是直至并包括该行的所有数据库行的总和。如果我不需要,我不希望将小计纳入数据库行,因为这会使插入和删除行变得更加困难。
任何想法?
我试图显示绑定到我的ListView
的每一行的数据库值的小计。我不想将小计保留为数据库列,因此我试图在显示值时累计这些值。当然,这带来了一个显而易见的问题,就是如何处理滚动,这会显示并重新显示一个值,从而搞砸了运行的小计。在每个列表视图行上显示子汇总
详细说明,每个listview行有两个字段,一个值和一个小计。该值来自数据库行,小计是直至并包括该行的所有数据库行的总和。如果我不需要,我不希望将小计纳入数据库行,因为这会使插入和删除行变得更加困难。
任何想法?
创建自定义适配器,创建一个数组来保存分类汇总和使用,在您的getView维持即使在滚动时也是小计。
public class CustomCursorAdapter extends SimpleCursorAdapter {
private Cursor c;
private Context context;
private Activity activity;
private int[] subtotal;
private int subtotalhold;
private int layout;
public CustomCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
this.context = context;
this.activity = (Activity) context;
this.layout = layout;
subtotal = new int[c.getCount()];
subtotalhold=0;
c.moveToFirst();
int i = 0;
while (c.isAfterLast() == false) {
subtotalhold = subtotalhold + c.getInt(columnIndex);
subtotal[i] = subtotalhold;
i++;
c.moveToNext();
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = View.inflate(context, layout, null);
c.moveToPosition(position);
TextView subtotal = (TextView) convertView.findViewById(R.id.subtotal);
subtotal.setText(subtotal[position]);
// rest of your code to populate the list row
return (row);
}
}
小计是如何计算的? – candyleung 2012-04-27 02:43:29
这是一个运行总数。把它看作一本支票簿,其中数据库行包含支票金额,但不包括余额。 – Digilee 2012-04-27 02:57:17