Номер извлекает данные c из последних введенных данных указанного c ID - PullRequest
0 голосов
/ 30 марта 2020

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

@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);  

, но он не работает в моем случае, тогда я использовал другой запрос

@Query("SELECT * FROM newRecord_table ORDER BY cast (jadPage as integer) DESC LIMIT 1")
    LiveData<List<NewRecord>> findJadpage();  

при использовании запроса выше с кодом ниже

selectStudentName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(final AdapterView<?> adapterView, View view, final int position, final long l) {

                    String name = adapterView.getItemAtPosition(position).toString();

                    recordIds = studentViewModel.getAllStudents().getValue().get(position).getId();
//                    System.out.println("STUDENT ID: " + recordIds);
//
//                    final int list1 = newRecordViewModel.getAllRecords().getValue().get(position).getId();
//                    System.out.println("LIST ID: " + list1);

                    newRecordViewModel.getJadRecord().observe(AddRecord.this, new Observer<List<NewRecord>>() {
                        @Override
                        public void onChanged(List<NewRecord> newRecords) {
                            // logic to get jad page..
                            String page = newRecords.get(position).getJadPage();

                            jadPage.setText(newRecords.get(id).getJadPage(), TextView.BufferType.EDITABLE);

                        }
                    });
                }
            }  

ниже находится хранилище

public class NewRecordRepository {
    private NewRecordDAO newRecordDAO;
    private StudentDAO studentDAO;
    private LiveData<List<NewRecord>> jadeedRecord;
    public NewRecordRepository(Application application) {
        StudentDatabase database = StudentDatabase.getInstance(application);
        newRecordDAO = database.newRecordDAO();
        studentDAO = database.studentDAO();
        jadRecord = newRecordDAO.findJadpage();
    }  
    public LiveData<List<NewRecord>> getJadRecord() {
        return jadRecord;
    }

но я получаю java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
Я не знаю, как решить эту проблему, я искал net, нашел много решений, но это действительно так не вписывается в мой сценарий. Пожалуйста, помогите .. спасибо!

1 Ответ

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

Я думаю, что ошибка довольно проста. Вы пытаетесь прочитать позиции за 0 в списке, который имеет только одну запись, а именно jadRecord. таким образом, решение заключается в том, чтобы просто прочитать элемент 0, например,

String page = newRecords.get(0).getJadPage(); 

, потому что в списке никогда не будет более одного элемента. могут быть и другие случаи, когда это проблема

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