Я создаю приложение планирования полета, в котором пользователи могут создавать несколько рейсов, каждый из которых имеет свой собственный отчет о расходах.Для каждого рейса, созданного пользователем, у каждого из них будет кнопка, которую можно нажать, чтобы открыть другое действие под названием AddExpenses.class
, и из этого класса пользователь сможет добавить несколько расходов к этой конкретной поездке.
Поскольку это объяснение длинное и немного сбивает с толку, я использую "()" со ссылкой на таблицу.Например, (полеты) будут относиться к таблице полетов.
У меня есть две таблицы, одна из которых (полеты), а другая (транзакции).У каждого рейса может быть много записей транзакций (транзакций), но я не могу показать первичный ключ, когда пользователь просматривает все из (транзакций), потому что для таблицы (транзакций) первичный ключ называется Transactions_id и он автоинкрементен.
Это проблема, потому что если в ПЕРВОМ рейсе есть 3 записи о транзакциях, которые были добавлены, в таблицу (транзакции) будет добавлено 3 строки с транзакцией_id 1,2,3.И когда пользователь добавляет транзакции из ВТОРОГО рейса, то идентификаторaction_id, который является первичным ключом, не будет начинаться с 1, а продолжится с 4 ... и так далее.
Итак, я пытаюсь добавить 2 дополнительных столбца в мою таблицу (транзакции), которая называется id_shown и flightposition_id.Столбец «id_shown» будет повторяться и начинаться с 1 снова, если пользователь добавляет записи транзакций из другого рейса.И «flightposition_id» просто показывает, какие строки записей транзакций в (транзакции) находятся под этим конкретным «flight_id» в (полетов), чтобы я мог отображать правильные записи транзакций в (транзакциях), когда они просматривают записи из определенного рейса.
Это метод onCreate в моем классе DatabaseHelper, который расширяет SQLiteOpenHelper для моей таблицы (транзакции): -
db.execSQL("CREATE TABLE " + TRANSACTION_TABLE + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, AMOUNT DOUBLE NOT NULL, CATEGORY TEXT NOT NULL, NOTE TEXT, TRANSACTION_ID TEXT NOT NULL, FLIGHT_ID INTEGER NOT NULL, FOREIGN KEY (FLIGHT_ID) REFERENCES FLIGHT_TABLE(id) )");
Это кнопка добавления в моем классе "AddExpenses", чтобы добавить большетранзакции: -
public void AddTransactions (final String flightposition_id) {
button_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDb.getTransactionData()
boolean isInserted = myDb.insertTransactionData(amount.getText().toString(), category, note.getText().toString(), transaction_id, flightposition_id);
if (isInserted = true) {
Toast.makeText(AddExpenses.this, "Transaction Inserted !", Toast.LENGTH_LONG).show();
clearText();
}
else {
Toast.makeText(AddExpenses.this, "Transaction not Inserted !", Toast.LENGTH_LONG).show();
}
textView_id.setText(transaction_id);
}
});
}
На данный момент я получаю flightposition_id, передавая его из MainActivity, расширяющего RecyclerView.Adapter, в класс «AddExpenses»: -
button_addexpenses.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Context context = v.getContext();
Intent intent = new Intent(context, AddExpenses.class);
intent.putExtra("Position", getAdapterPosition());
context.startActivity(intent);
}
});
Все работает довольно хорошоУ меня сейчас только одна проблема: если я пытаюсь добавить записи транзакций из ВТОРОГО рейса, я хочу, чтобы мое приложение проверяло все строки в (транзакции), которые имеют столбцы "flightposition_id" со значением, которое совпадает с позициейЯ нахожусь (второй полет означает позицию "1").
И свсе строки (транзакции) со значением flight_position равным «1», я хочу, чтобы приложение добавило мою следующую транзакцию на целое число выше, чем самое высокое или последнее значение «id_shown».Если наибольшее значение равно 4, то счетчик будет +1, делая его 5 и так далее.
Можете ли вы направить меня и дать краткий код того, что я должен добавить к своей кнопке добавления в AddExpenses.class?Я знаю, что это длинное объяснение и, возможно, сбивает с толку, спасибо миллион за то, что нашли время прочитать!