3

我正在尝试显示绑定到我的每一行的数据库值的小计ListView。我不想将小计保留为数据库列,因此我试图在显示值时累积它们。当然,这带来了如何处理滚动的明显问题,滚动会显示和重新显示一个值,弄乱正在运行的小计。

详细地说,每个列表视图行都有两个字段,一个值和一个小计。该值来自数据库行,小计是直到并包括该行的所有数据库行的总和。如果不需要,我不想将小计包含在数据库行中,因为这会使插入和删除行变得更加困难。

有任何想法吗?

4

2 回答 2

2

创建一个自定义适配器,创建一个数组来保存小计,并在您的 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);
    }
}
于 2012-04-27T06:44:43.303 回答
0

遍历正在加载到 ListView 中的值,然后同时计算它......

于 2012-04-27T03:18:45.537 回答