Можно увеличить число для строки с помощью цикла? Студия Android

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

Это мои данные. У меня две таблицы. "Donation_Details" TxnNo данные поступают из "Информация" 'unitcode + lastTxnNo'

Можно увеличить число для строки с помощью цикла? Студия Android

Как увеличить число до «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
0
718
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

вы можете сделать это, используя общие настройки,

в вашем случае инициализируйте значение 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 - это значение, которое обновляется каждый раз. потому что я увеличивал его, когда сохраняю его в sharedprefs.

Jay Mungara 18.09.2018 09:28

Если я использую, в вашем коде есть ошибка "id ++". Я обновил последний дизайн базы данных. пожалуйста, обратитесь к более четкому дизайну ...

Leon Zaii 18.09.2018 10:08
Ответ принят как подходящий

Попробуй это

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();          
        }
     });

Я хочу, чтобы он автоматически увеличивался ... Если использовать String, это не сработает?

Leon Zaii 18.09.2018 09:05

Приведенный выше код будет работать, только если вы не закроете приложение. После закрытия он снова начнется с 0.

John Joe 18.09.2018 09:13

какой у тебя ++ i?

Leon Zaii 18.09.2018 09:27

оххх. Я хочу сохранить это в базе данных

Leon Zaii 18.09.2018 09:28

Я пробую сначала. Спасибо @John Joe

Leon Zaii 18.09.2018 11:13

Если вы не закрываете приложение, работает ли автоинкремент?

John Joe 19.09.2018 10:08

Я использую cv.put("TxnNo", txn.getTxnNo());, Txn.getTxnNo - это ООП. как мне применить это в вашем коде?

Leon Zaii 20.09.2018 03:50

Но строка «txn.setTxnNo (i)» говорит, что String в модели не может быть применена к (int) .... И я не могу поместить ее в «toString». Есть ли способ исправить?

Leon Zaii 20.09.2018 04:01

куда добавить .toString()? Вы можете разместить полную строку?

John Joe 20.09.2018 04:05

Т.к. в моей базе. My TxnNo - это строка. Итак, я - целое число. Два не могут быть применены. txn.setTxnNo(i);

Leon Zaii 20.09.2018 04:08

setTxnNo - это строка. (i) - целое число. Два не могут быть применены.

Leon Zaii 20.09.2018 04:09

как насчет txn.setTxnNo(i+");?

John Joe 20.09.2018 04:13

Я не работаю, но мне вдруг кажется, что другие пути могут сработать. Спасибо

Leon Zaii 20.09.2018 05:11

Вы знаете, как заставить его постоянно увеличиваться, а не возвращаться к 0? @ Джон Джо

Leon Zaii 20.09.2018 06:04

МОЙ БОГ!! Это работает ... Вы действительно профессиональны. Большое спасибо, мой друг.

Leon Zaii 20.09.2018 08:50

Простите за беспокойство. Вы можете сделать мне одолжение? Я не знаю, как применить общие предпочтения В моем последнем коде ... Я обновил последний код под вашим кодом ... вы можете мне помочь? @ Джон Джо

Leon Zaii 01.10.2018 05:59

@LeonZaii Извини, я тебя не понимаю.

John Joe 01.10.2018 06:07

Рассмотрите возможность добавления нового сообщения, предоставив дополнительную информацию

John Joe 01.10.2018 06:10

Это мой новый пост ... Спасибо ссылка @John Joe

Leon Zaii 01.10.2018 06:13

Можете ли вы обратиться туда и помочь мне решить эту проблему? @ Джон Джо

Leon Zaii 01.10.2018 08:15

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

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.

вот как: учитывая, что данные присутствуют в pref

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

Другие вопросы по теме