Запрос единичной строки из базы данных в Room

как запросить например на отображение в TextView имя работника по id из базы данных, чтобы можно было через логи посмотреть или через TextView? Да я знаю что в начале надо сделать запрос в @Query типо такого

@Query("SELECT * FROM employee WHERE id IN (:idList)")
List<Employee> getByIdList(List<Long> idList);

а как дальше реализовать? чую что через LiveData. или лучше всего через DataBinding? В интернете в основном представлены варианты с адаптером recyclerview (пример кода из адаптера):

@Override
public void onBindViewHolder(RoomViewHolder holder, int position) {
    
    Employee employee = EmployeeList.get(position);
    // SETTEXT IN RECYCLERVIEW
    holder.contacts.setText(employee.getContacts());

}

Вообщем - как вывести одну определенную строку, по id в активити?


Ответы (2 шт):

Автор решения: Eugene Krivenja

Что же его так долго искать, это решение :)

Можно, конечно, и в списке List<Employee> поискать нужного человека, но правильно будет добавить в DAO

@Query("SELECT * FROM employee WHERE id = :id")
Employee getEmployeeById(Long id);
→ Ссылка
Автор решения: Arsen

У меня получилось извлечь данные из базы данных с помощью ViewModel.

private EmployeeViewModel employeeViewModel;
String name;
int position = 1;

Далее например в методе OnCreate работаем с ViewModel, извлекаем данные

 employeeViewModel = ViewModelProviders.of(this).get(EmployeeViewModel.class);
    employeeViewModel.getAllEmployees().observe(this, new Observer<List<Employee>>() {
             @Override
           public void onChanged(@Nullable final List<Employee> employees) {
              
              Employee currentEmployee = employees.get(position); // Employee - класс Entity
              name = currentStation.getName() // исходя из позиции указанной раннее извлекаем имя
                        
        
          }
    }); 

Код из @DAO

@Query("SELECT * FROM employee_table ORDER BY id ")// DESC is used to sort the data returned in descending order
    LiveData<List<Employee>> getAllEmployees();

  

  
→ Ссылка