Как сделать приращение для строки?Я положил две строки вместе, но я только хочу, чтобы lastTxnNo увеличилось.Студия Android - PullRequest
0 голосов
/ 27 сентября 2018

my txn.getUnit_Code() - это "A001", а txn.getLastTxnNo() - это "0001".Обе строки.Я хочу увеличить последний номер txn всякий раз, когда я сохраняю запись.Но так как это строка, поэтому я поставил +1, она станет «A00100011» вместо «A0010002».Если я хочу сделать это от «A0010001» до «A0010002», как это сделать?

String txnNo = txn.getUnit_Code() + txn.getLastTxnNo() + 1;
        D_Txn.setText(txnNo);

это кнопка сохранения.Поэтому я поместил приведенный выше код, чтобы сделать его "A0010001", но я не знаю, как сделать это после того, как я нажму кнопку. Следующий txnNo становится "A0010002"

Model txn = new Model();// initialize your model class first
                BigDecimal paidAmt = new BigDecimal(D_Amount.getText().toString()).setScale(2, RoundingMode.HALF_UP);
                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 = mSQLiteHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("name", txn.getName());
                    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();
                }

МожетУ меня есть помощь ...?Заранее спасибо.

Это мое обновление

Я инициализировал int increaseNumber = 1; на странице и положил increaseNumber++ при нажатии кнопки.Но это не работает.почему?

Db_Save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Model txn = new Model();// initialize your model class first
                BigDecimal paidAmt = new BigDecimal(D_Amount.getText().toString()).setScale(2, RoundingMode.HALF_UP);
                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 = mSQLiteHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("name", txn.getName());
                    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();
                }
                increaseNumber++;
            }
        });

и этот формат я установил

private void populate_TxnNo() {

    int lastNumber = Integer.valueOf(txn.getLastTxnNo());
    lastNumber = lastNumber + increaseNumber ;
    String stringLast = String.format("%04d",lastNumber);
    String txnNo = txn.getUnit_Code() + stringLast;
    D_Txn.setText(txnNo);


}

Ответы [ 3 ]

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

Как вы хотите только в увеличении txn.getLastTxnNo (), затем преобразуйте его в int, затем увеличьте, затем снова сделайте его String.То, как вы это сделали, это объединение 2 строк.

int id = Integer.valueOf(txn.getLastTxnNo());
    id = id+1;
    String stringId = String.format("%05d",id);
    String txnNo = txn.getUnit_Code() + stringId;
0 голосов
/ 27 сентября 2018

Вы можете сделать это следующим образом:

String s1 = txn.getUnit_Code();
String s = txn.getLastTxnNo();
int i = s.length();
String s2 = s.deleteCharAt(i-1);
int j = 1; // you will increment this integer


// this checks to ensure the string does not extend 
// beyond the desired length when the int enters 
//10s and 100s
if (j ==10){
    s2 = s.deleteCharAt(i-1)
    s2 = s.deleteCharAt(i-2)
}
if (j ==100){
    s2 = s.deleteCharAt(i-1)
    s2 = s.deleteCharAt(i-2)
    s2 = s.deleteCharAt(i-3)
}

String txnNo = s1 + s2 + j  ;
0 голосов
/ 27 сентября 2018

Вы не можете давать int для строки.Что вы можете сделать, это:

String numberPrefix = txn.getUnit_Code(); //String = A001
int numberSufix = 1;

String sufixAndPrefix = numberPrefix + "000" + numberSufix;

//OnClickListener
numberSufix++;
D_Txn.setText(sufixAndPrefix);
...