可以使用for循环增加字符串的数量? Android工作室

时间:2018-09-18 06:29:24

标签: android database for-loop android-sqlite

有什么办法可以对字符串进行循环? 这是我的数据库数据。我不能使用Int,因为它将不允许0作为第一个字符。

这是我的数据。我有两个表。 “ Donation_Details ” Txn没有数据来自“ 信息”“单位代码+ lastTxnNo”

Database img

单击“保存”按钮后如何将数字增加为“ 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();
                } 

谢谢。

3 个答案:

答案 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