Android:如何将我搜索的每个项目添加到RecyclerView? (TextChangeListener和会议室数据库)

时间:2019-05-24 16:34:50

标签: android database kotlin android-recyclerview adapter

我想使用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 :(得分:0)

将搜索字符串包装在通配符中(它至少应具有尾部的通配符<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> ):

%

通常只查询例如。当val itemsList = db?.costDAO()!!.getByName("%" + s.toString() + "%") 时,为了不查询单个字符;而3-4个字符可能已经出现了非常相关的记录集。