SAN*_*SAN 1 java sqlite android
我有一个 sqlite 表,其中的金额字段带有 NUMERIC(10,5) 值(我知道数据类型在 sqlite 中意味着不多)。我想编写一个选择语句,以小数点后两位显示金额。
id name type notnull dflt_value pk
------- --------------- ---------- ----------- -------------- ---
0 _id integer 0 1
1 name varchar 1 0
2 amount NUMERIC(10,5) 0 0
SELECT _id, name, amount FROM accounts
Run Code Online (Sandbox Code Playgroud)
是否可以在 select 语句中将金额转换为两位小数,以便我可以在应用程序中显示两位小数。我需要在 select 语句中进行格式化,不想更改表结构。提前致谢。
我使用以下代码来填充 android 中的列表视图
cursor = dbAdapter.getAccountsTotals();
startManagingCursor(cursor);
String[] from = new String[] { DbAdapter.KEY_ID, DbAdapter.KEY_NAME, DbAdapter.KEY_AMOUNT};
int[] to = new int[] { R.id.dis1, R.id.dis2, R.id.dis3};
SimpleCursorAdapter trans = new SimpleCursorAdapter(this, R.layout.accts_row, cursor, from, to);
setListAdapter(trans);
Run Code Online (Sandbox Code Playgroud)
因此从数据库获取后无法格式化结果。请让我知道有一种方法可以在上面的代码中分配格式化值,谢谢。
SELECT _id, name, ROUND(amount,2) FROM accounts
Run Code Online (Sandbox Code Playgroud)
以下代码将告诉您如何做到这一点
公共类 TestListView 扩展 ListActivity {
...
私有 DecimalFormat myCustDecFormatter = new DecimalFormat("########.00");
...
...
/** 在第一次创建活动时调用。*/
@覆盖
公共无效onCreate(捆绑保存实例状态){
...
...
...
}
私人无效填充数据(){
/* 从数据库中获取所有行并创建项目列表 */
/* 对于多个帐户,传入帐户名称?*/
mEntryCursor = mDbHelper.fetchAllEntries();
开始管理光标(mEntryCursor);
// 创建一个数组来指定我们要在列表中显示的字段(仅TITLE)
String[] from = new String[]{myDbAdapter.KEY_NMBR,myDbAdapter.KEY_DATE,myDbAdapter.KEY_DESCR,myDbAdapter.KEY_AMT};
// 以及我们想要将这些字段绑定到的字段数组(在本例中只是 text1)
int[] to = new int[]{R.id.txtnmbr, R.id.txtdate, R.id.txtdescr, R.id.txtamt};
// 现在创建一个简单的光标适配器并将其设置为显示
setListAdapter(new SimpleCursorAdapter(this, R.layout.entryrow, mEntryCursor, from, to) {
@覆盖
公共无效setViewText(TextView v,字符串文本){
super.setViewText(v, convText(v, 文本));
}
});
}
私有字符串 convText(TextView v, 字符串文本) {
开关 (v.getId()) {
案例 R.id.txtamt:
双 dbAmt;
//dblAmt = Double.valueOf(text);
dblAmt = mEntryCursor.getDouble(AMT_COLUMN);
返回 myCustDecFormatter.format(dblAmt);
}
返回文本;
}
}//结束TestListView
| 归档时间: |
|
| 查看次数: |
16500 次 |
| 最近记录: |