有什么办法可以对字符串进行循环? 这是我的数据库数据。我不能使用Int,因为它将不允许0作为第一个字符。
这是我的数据。我有两个表。 “ Donation_Details ” Txn没有数据来自“ 信息”“单位代码+ lastTxnNo”
单击“保存”按钮后如何将数字增加为“ 0012”?当用户单击“保存”按钮时,我必须检查一次,它将自动自动增加,以确保用户知道已创建了多少交易。
这是我的验证码。
BigDecimal paidAmt = new BigDecimal(D_Amount.getText().toString()).setScale(2, RoundingMode.HALF_UP);
Model txn = new Model(); // initialize your model class first
txn.setName(D_Name.getText().toString());
//txn.setTxnNo(D_Txn.getText().toString());
txn.setTxnDate(Select_Date.getText().toString());
txn.setAmount(paidAmt);
txn.setDescription1(D_Description.getSelectedItem().toString());
txn.setDescription2(Ds_Description.getText().toString());
try {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("name", txn.getName()); // get the entered name here.
//cv.put("TxnNo", txn.getTxnNo());
cv.put("TxnDate", txn.getTxnDate());
cv.put("Amount", txn.getAmount().toPlainString());
cv.put("Description1", txn.getDescription1());
cv.put("Description2", txn.getDescription2());
db.insert("Donation_Details", null, cv);
db.close();
Toast.makeText(Donation_Page.this, "Add successfully", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
谢谢。
答案 0 :(得分:1)
尝试一下
cv.put("TxnNo", String.format("%04d", txn.getTxnNo()));
它将以零填充,长度为4。
修改
int i; // declare as global value
Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
i = ++i;
txn.setTxnNo(i);
cv.put("TxnNo", String.format("%04d", txn.getTxnNo()));
}
});
要防止数字返回0,您需要使用SharedPreferences
。
SharedPreferences app_preferences =PreferenceManager.getDefaultSharedPreferences(Activity1.this);
SharedPreferences.Editor editor = app_preferences.edit();
int i = app_preferences.getInt("key",0);
Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
i = ++i;
txn.setTxnNo(i+""); // set to Model class
cv.put("TxnNo", String.format("%04d", txn.getTxnNo())); // save to database and padding 0 to left
editor.putInt("key",i).commit();
}
});
答案 1 :(得分:0)
您可以使用共享首选项来实现,
根据您的情况,初始化一个int值,
int id;
SharedPreferences sharedpreferences = getSharedPreferences("data-Info", Context.MODE_PRIVATE);
Editor editor = sharedpreferences.edit();
editor.putString("key",id++);
editor.commit();
现在,要使用首选项获取该值,
id=sharedpreferences.getInt("key", 0);
这样,您无需关心自己的ID。
答案 2 :(得分:0)
如果您只想增加整数的值,请执行此操作
String num = /*get the value from db*/;
int num1 = Integer.parseInt(num+"");
num = num1+"";
//then save the string num to the db.
但是,如果您想将值保存在设备中,那么明智的选择是必经之路。
private SharedPreferences pref;
pref = getApplicationContext().getSharedPreferences("valuestorage", 0); // 0 - for private mode
String num = /*get the value from db*/;
int num1 = Integer.parseInt(num+"");
num = num1+"";
pref.edit().putString("lastno",num).apply();
//then save the string num to the db.
现在您不必每次仅在pref值为null时才调用数据库。
所以现在您将检查从pref递增的值,然后再次将其保存在db中。
方法如下: 考虑数据存在于首选项
String aa = pref.getString("lastno","");
if(!aa.equals(""))
{
String num = aa;
int num1 = Integer.parseInt(num+"");
num = num1+"";
pref.edit().putString("lastno",num).apply();
//then save the string num to the db.
}
https://developer.android.com/training/data-storage/shared-preferences