Android Номер базы данных, получить специфику c значение последней введенной записи - PullRequest
0 голосов
/ 24 марта 2020

Я использовал Android База данных комнаты для создания своего приложения, я заполняю записи студентов, я хочу получить номер страницы последней записи, которую я ввел, из базы данных комнаты, когда я выбираю имя студента. Это мой код ниже
DOA

@Dao
public interface NewRecordDAO {

    @Insert(onConflict = REPLACE)
    public void addRecord(NewRecord... newRecord);

    @Update(onConflict = REPLACE)
    public void updateRecord(NewRecord newRecord);

    @Delete
    public void deleteRecord(NewRecord newRecord);

    @Query("DELETE FROM newRecord_table")
    void deleteAllRecords();

    @Query("SELECT * FROM newRecord_table ORDER BY NRdate DESC")
    LiveData<List<NewRecord>> getAllRecord();

    @Query("SELECT * FROM newRecord_table WHERE NRdate = (SELECT MAX(NRdate) FROM newRecord_table)")
    LiveData<List<NewRecord>> findRecordByDate ();
}  

У меня есть класс репозитория и класс модели просмотра, но я не публикую эти коды здесь.
Ниже приведен код, где я получаю имя студента и номер мобильного телефона и привязка к счетчику. Используя этот код, я хочу получить номер страницы последней записи учащегося, которую я выбрал из счетчика.

newRecordViewModel = ViewModelProviders.of(AddRecord.this).get(NewRecordViewModel.class);
        newRecordViewModel.getAllRecords().observe(this, new Observer<List<NewRecord>>() {
            @Override
            public void onChanged(List<NewRecord> newRecords) {
            }
        });

        selectStudentName.setTitle(getResources().getString(R.string.select_student_name));
        selectStudentName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> adapterView, View view, final int position, final long l) {
                if ( position == -1 ) {
                    Toast.makeText(AddRecord.this, "No record is selected", Toast.LENGTH_SHORT).show();
                } else {
                    String name = adapterView.getItemAtPosition(position).toString();
                    Toast.makeText(AddRecord.this, name + " is selected", Toast.LENGTH_SHORT).show();
                    String studentMobile = Objects.requireNonNull(studentViewModel.getAllStudents().getValue()).get(position).getMobileNumber();
                    studentMOB.setText("Mobile: " + studentMobile);
                    recordIds = studentViewModel.getAllStudents().getValue().get(position).getId();

                }
            }  

Я не знаю, достаточно ли я ясен. Я надеюсь, что я есть. Пожалуйста помоги. Спасибо

1 Ответ

0 голосов
/ 24 марта 2020

Вам просто нужно создать новый Query, чтобы получить то, что вам нужно.

Из того, что вы говорите, вы хотите найти запись от одного учащегося и отобразить последнюю страницу, которую он прочитал, так что должно быть что-то вроде этого

@Query("SELECT * FROM newRecord_table WHERE newRecord_table.studentid = :studentId ORDER BY newRecord_table.date, newRecord_table.page DESC ")
LiveData<List<NewRecord>> findLastPage(Integer studentId);

studentId - это пользователь, которого вы хотите найти записи. Не забудьте разобраться со случаем, когда ничего нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...