我正在尝试显示绑定到我的每一行的数据库值的小计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);
}
}
遍历正在加载到 ListView 中的值,然后同时计算它......