// 使用 ArrayList 作为数据容器,其中的每一项都是 HashMap<String, Object>
ArrayList<HashMap<String, Object>> PayItems;
PayItems = new ArrayList<HashMap<String, Object>>();
// 新增一项
HashMap<String, Object> map = new HashMap<String,Object>();
map.put("rownum", PayItems.size() + 1);
map.put("name", strName);
map.put("nameid", NameId);
map.put("shiyou", strShiyou);
map.put("date", edtDate.getText().toString().trim());
PayItems.add(map);
// 遍历容器中每一项,将其写入数据库
ContentValues cv = new ContentValues();
for (HashMap<String, Object> i : PayItems) {
cv.clear();
cv.put("pid", (Long)i.get("nameid"));
cv.put("pay", (Integer)i.get("pay"));
cv.put("shiyou", (String)i.get("shiyou"));
cv.put("date", (Long)i.get("juliandate"));
ret = db.insert("zhangmu", null, cv);
}
PayItems.clear();
// 将容器中的数据绑定到 ListView 上,根据每一行的 flagIn ,使用两种不同的布局文件(其中的子控件只有位置差异,ID都相同)
adpPayItems = new SimpleAdapter(this, PayItems, (flagIn? R.layout.l_pay_item_in : R.layout.l_pay_item_out),
new String[] {"rownum","name", "pay","shiyou", "date"},
new int[] {R.id.tZMNum, R.id.tZMName, R.id.tSum, R.id.tZMShiyou, R.id.tZMDate}){
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View v = super.getView(position, convertView, parent);
// ListItem 中有一个删除按钮,用于删除当前条目
ImageButton btnDel = (ImageButton) v.findViewById(R.id.btnItemDel);
btnDel.setTag(position);
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final View vv = v;
AlertDialog.Builder dlg = new AlertDialog.Builder(actInput.this);
dlg.setTitle("确认")
.setMessage("确定要删除当前项目吗?")
.setNegativeButton("取消", null)
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 删除当前条目
PayItems.remove((int) vv.getTag());
UpdateList();
}
}
)
.show();
} // END OF "onClick"
}); // END OF "new View.OnClickListener()"
return v;
} // END OF "override GetView()"
}; // END OF "new SimpleAdapter()"