【发布时间】:2018-11-24 13:39:29
【问题描述】:
我正在处理 ListView:
val animals = arrayOf("cat","dog", "mouse", "parrot", "lion", "panda")
internal lateinit var adapter: ArrayAdapter<String>
val list = findViewById(R.id.lista) as ListView
adapter = ArrayAdapter(
this@MainActivity,
android.R.layout.simple_list_item_1,
animals)
list.adapter = adapter
这是选中位置项的条件:
list.setOnItemClickListener { adapterView, view, i, l ->
when(i) {
0 -> {
webView1.loadUrl("catweb1")
phone.text = "catnumber"
webView2.loadUrl("catweb2")
}
1 -> {
webView1.loadUrl("dogweb1")
phone.text = "dognumber"
webView2.loadUrl("dogweb2")
}
2 -> {
webView1.loadUrl("mouseweb1")
phone.text = "mousenumber"
webView2.loadUrl("mouseweb2")
}
3 -> {
webView1.loadUrl("parroteweb1")
phone.text = "parrotnumber"
webView2.loadUrl("parrotweb2")
}
4 -> {
webView1.loadUrl("lionweb1")
phone.text = "lionumber"
webView2.loadUrl("lionweb2")
}
5 -> {
webView1.loadUrl("pandaweb1")
phone.text = "pandanumber"
webView2.loadUrl("pandaweb2")
}
}
我正在使用这 3 个按钮来让这些选定的项目完成它们的工作,因为 webView1 位于 website1 布局内,而 webView2 位于 website2 布局内。
web1.setOnClickListener {
ListView.visibility= View.GONE
website1.visibility= View.VISIBLE
}
web2.setOnClickListener {
ListView.visibility= View.GONE
website2.visibility= View.VISIBLE
}
phone.setOnClickListener {
makeCall(phone.text.toString())
}
我正在使用 MenuSearch 在列表中进行搜索:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android2="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android2:id="@+id/menuSearch"
android2:icon="@android:drawable/ic_menu_search"
android2:title="Search"
app:showAsAction="always"
app:actionViewClass = "android.widget.SearchView"/>
</menu>
这是代码:
override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater = menuInflater
inflater.inflate(R.menu.menu_search, menu)
val item = menu.findItem(R.id.menuSearch)
val searchView = item.actionView as SearchView
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
return false
}
override fun onQueryTextChange(newText: String): Boolean {
adapter.filter.filter(newText)
return false
}
})
return super.onCreateOptionsMenu(menu)
}
当列表未被过滤时一切正常,但我的问题在我使用过滤器后开始,如果我过滤 Panda,它会在单击 web1 按钮时始终加载 catweb1,而不是 pandaweb1,它会调用catnumber 在点击 phone 按钮时加载 catweb2 在点击 web2 按钮时加载。
我已经在这里寻找类似的问题,但我只找到了列表视图的所有复杂(至少对我而言)CustomedAdapters 的答案。
有没有一种简单的方法可以在我的项目被过滤后保持它们的位置?
或者我应该使用某种 Ifs 语句来代替吗?
【问题讨论】:
标签: android listview kotlin position filtering