можно увеличить число для строки, используя для цикла? Android студия - PullRequest
0 голосов
/ 18 сентября 2018

есть ли способ сделать цикл для строки?Это моя база данных.Я не могу использовать Int, потому что он не позволит 0 быть первым символом.

Это мои данные. У меня есть две таблицы." Donation_Details " TxnNo данные поступают из " Информация " 'unitcode + 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 голосов
/ 18 сентября 2018

Попробуйте это

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();          
        }
     });
0 голосов
/ 18 сентября 2018

в случае, если вы просто хотите увеличить значение целого числа, просто сделайте это

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 равно нулю.

так что теперь вы будете проверять значение из 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

0 голосов
/ 18 сентября 2018

вы можете сделать это с помощью общих настроек,

в вашем случае инициализируйте значение типа 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);

таким образом, вам не нужно заботиться о своей личности.

...