Как я могу запросить ввод пользователя? - PullRequest
0 голосов
/ 28 января 2019

Я учу SQL и Room.Я успешно запросил все данные в Room:

@Query( "SELECT * FROM my_table" )
LiveData<List<MyRoomEntity>>getAllData();

Я также указал поиск в столбце name:

@Query( "SELECT id, name FROM my_table" )
LiveData<List<MyRoomEntity>>getAllNames();

Следующий шаг - запросить ввод данных пользователем.Допустим, пользователь хочет найти в базе данных Боба.Как это выглядит как запрос?Очевидно, что запрос должен быть динамическим и запрашивать userInput, а не конкретно Боба;)

Я искал решение для этого, но я новичок в Room и SQL, поэтому я думаю, что мне нужнонемного помочь здесь:)

1 Ответ

0 голосов
/ 28 января 2019

Используйте :input и обязательно включите параметр, например так:

@Query("SELECT * FROM my_table WHERE name = :input" )
LiveData<List<MyRoomEntity>>getUserInputName(String input);

Затем в Repository:

public LiveData<List<MyRoomEntity>> getUserInputName(String inputName) {
    return this.roomDao.getUserInputName(inputName);
}

И в ViewModel:

public void getUserInputName(String inputName) {
    repository.getUserInputName(inputName).observe( mOwner, new android.arch.lifecycle.Observer<List<MyRoomEntity>>() {
        @Override
        public void onChanged(@Nullable List<MyRoomEntity> myRoomEntities) {
            if(myRoomEntities != null) {
                for(MyRoomEntity item: myRoomEntities) {
                    Log.d("TAG ROOM ", "Input Name: " + item.toString());
                }
            }
        }
    } );
}

Просто передайте параметр и аргумент.И, наконец, при вызове метода в MainActivity():

private String input = "Joe";
myViewModel.getUserInputName(input);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...