Почему не загружаются данные из Room в RecyclerView по запросу?
У меня есть Enity и DAO
@Entity(tableName = GarmentTable.NAME,
foreignKeys = @ForeignKey(entity = GarmentType.class, parentColumns = GarmentTypeTable.Cols.ID, childColumns = GarmentTable.Cols.TYPE))
public class Garment {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = GarmentTable.Cols.ID)
private long mId;
@ColumnInfo(name = GarmentTable.Cols.TYPE, index = true)
private int mTypeId;
//getters setters
}
@Dao
public interface GarmentDao {
@Query("SELECT * FROM " + GarmentTable.NAME)
LiveData> getAll();
@Query("SELECT * FROM " + GarmentTable.NAME + " WHERE :clause")
LiveData> getByClause(String clause);
}
В репозитории у меня есть два метода для получения всех Garment или garment по определенному запросу
public class GarmentRepository {
private GarmentDao mGarmentDao;
private LiveData> mGarments;
public LiveData> getAllGarments() {
return mGarments;
}
public LiveData> getGarments(String whereClause) {
return mGarmentDao.getByClause(whereClause);
}
}
В ViewModel делаю запросы в репозиторий
public class GarmentViewModel extends AndroidViewModel {
private GarmentRepository mRepository;
private LiveData> mGarments;
public GarmentViewModel(Application application) {
super(application);
mRepository = new GarmentRepository(application);
mGarments = mRepository.getAllGarments();
}
public LiveData> getGarments() {
return mGarments;
}
public void setGarments(String whereClause) {
mGarments = mRepository.getGarments(whereClause);
}
}
В RecyclerView добавляю garments
RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
final GarmentListAdapter adapter = new GarmentListAdapter(getActivity());
recyclerView.setAdapter(adapter);
mGarmentViewModel = ViewModelProviders.of(this).get(GarmentViewModel.class);
if(whereClause != null) {
mGarmentViewModel.setGarments(whereClause);
}
mGarmentViewModel.getGarments().observe(this, new Observer>() {
@Override
public void onChanged(@Nullable final List garments) {
adapter.setGarments(garments);
}
});
Вопрос в том, что если я делаю запрос на все garments, то у меня они отображаются, если ввожу какой-нибудь запрос (например whereClause = GarmentTable.Cols.TYPE + " = " + (i + 1); ), то у меня отображается пустой список. Сама программа у меня намного больше, я взял из нее отдельные части, которые относятся именно к этой проблеме. Есть ли какие-нибудь предположения почему так?