Android: Как добавить каждый элемент, который я искал, в RecyclerView? (TextChangeListener и Room Database) - PullRequest
0 голосов
/ 24 мая 2019

Я хочу выполнить поиск в базе данных с помощью EditText, а затем добавить элементы в RecylerView. У меня проблема с добавлением нескольких элементов из-за TextChangedListener и adapter.notifyDataSetChanged. Я могу добавить только один элемент. (Запрос должен быть в потоке). Как добавить каждый предмет, который я искал?

CostDao.kt

@Dao
interface CostDAO {

    @Query("select * from cost where name like :name")
    fun getByName(name : String) : List<Cost>

В MainActivity.kt я получил это:


 fun Threads() {
        editText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(
                s: CharSequence, start: Int,
                count: Int, after: Int
         ) {
            }

            override fun onTextChanged(
                s: CharSequence, start: Int,
                before: Int, count: Int
            ) {
                Thread {
                    val itemsList = db?.costDAO()!!.getByName(s.toString())

                    runOnUiThread {

                            recyclerView.adapter = MyAdapter(this@MainActivity, itemsList)
                            adapter.notifyDataSetChanged()

                    }
                }.start()
            }

            override fun afterTextChanged(s: Editable) { }

Теперь я могу просто искать один элемент, элемент отображается, и после изменения текста редактирования он исчезает, я хочу, чтобы он оставался, я хочу, чтобы каждый элемент, который я искал, автоматически добавлялся в RecyclerView.

1 Ответ

0 голосов
/ 24 мая 2019

оборачивает строку поиска в подстановочные знаки (по крайней мере, она должна иметь конечный подстановочный знак %):

val itemsList = db?.costDAO()!!.getByName("%" + s.toString() + "%")

обычно запрашивают только, например.когда s.length() > 3, чтобы не запрашивать отдельные символы;в то время как 3-4 символа уже могут отображать довольно релевантные наборы записей.

...