在我的活动中,我有一个 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()
}