Android Searchview 清除过滤器

时间:2021-01-17 13:19:25

标签: android kotlin

在我的活动中,我有一个 ListView 和一个 SearchView 作为操作栏项目。

用户可以搜索列表视图,也可以直接单击该项目。然后我想清除我的适配器并填充与之前单击的项目相对应的另一个数据。显然,他们这次也应该使用 SearchView

但问题是当用户在 SearchView 处于活动状态时点击第一部分中的一个项目时,一切都变得一团糟。我尝试了几件事,但没有运气。

private var data = ArrayList<String>()
private lateinit var adapter: ArrayAdapter<*>

private var searchView: SearchView? = null

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    // Arac cubugunda kullanacagimiz arama butonu icin bir menu olusturuyoruz.
    val inflater: MenuInflater = menuInflater
    inflater.inflate(R.menu.choose_menu, menu)

    // Arama butonunu tanimliyoruz.
    val searchItem = menu?.findItem(R.id.action_search)
    searchView = searchItem?.actionView as SearchView

    // Arama butonu icin dinleyicileri tanimliyoruz.
    searchView!!.setOnQueryTextListener(object: SearchView.OnQueryTextListener{
        override fun onQueryTextSubmit(query: String?): Boolean {
            return true
        }

        override fun onQueryTextChange(newText: String?): Boolean {
            // Arama butonuna girilen deger ile listemizi filtreliyoruz.
            adapter.filter.filter(newText)
            return true
        }
    })

    return true
}

private fun configureAdapter() {
    adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, data)
    choose_listView.adapter = adapter
}

当用户第一次点击该项目时。

private fun onItemClick(){
    if(!searchView!!.isIconified){
        adapter.filter.filter("")
    }

    data.clear()
    adapter.clear()
    for (i in 0 until bolumObject.length()) {
        data.add(bolumObject.getString((i+1).toString()))
    }
    adapter.notifyDataSetChanged()
}

0 个答案:

没有答案
相关问题