Запрос единичной строки из базы данных в 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 шт):
Что же его так долго искать, это решение :)
Можно, конечно, и в списке List<Employee> поискать нужного человека, но правильно будет добавить в DAO
@Query("SELECT * FROM employee WHERE id = :id")
Employee getEmployeeById(Long id);
У меня получилось извлечь данные из базы данных с помощью 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();