如何解决片段内的Searchview问题Kotlin
大家好,我的应用遇到了问题 我试图在片段中的工具栏上使用SearchView,但我无法弄清2件事 首先,为什么当我通过onCreateOptionsMenu使菜单膨胀时什么也没发生?我需要使用工具栏通过onCreateView来膨胀菜单。 通过onCreateOptionsMenu和onCreateView并使用 “ inflater.inflate(R.menu.search_menu,菜单) val searchItem = menu.findItem(R.id.SM)“ 我认为menu.findItem(R.id.SM)在文本编辑后尝试登录到searchview的显示列表时找不到找到这个结论的搜索项,但是日志甚至没有出现,所以我猜它没有执行log命令。 这是完整的代码,希望我能清楚自己的问题: Search.kt(搜索碎片)
package com.example.pricetag.fragments
import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.*
import android.widget.EditText
import androidx.appcompat.widget.SearchView
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.pricetag.R
import kotlinx.android.synthetic.main.fragment_search.*
import kotlinx.android.synthetic.main.rv_child_addlist.view.*
class search : Fragment() {
var itemList:MutableList<String> = ArrayList()
var displayList:MutableList<String> = ArrayList()
override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?) : View? {
val view = inflater.inflate(R.layout.fragment_search,container,false)
load()
val toolbar = view.findViewById<androidx.appcompat.widget.Toolbar>(R.id.searchTB)
toolbar.inflateMenu(R.menu.search_menu)
return view
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
rv_addingList.layoutManager = LinearLayoutManager(context)
rv_addingList.adapter = addListAdapter(requireContext(),displayList)
}
override fun onResume() {
refreshList()
super.onResume()
}
fun refreshList(){
rv_addingList.adapter = addListAdapter(requireContext(),displayList)
}
override fun onCreateOptionsMenu(menu: Menu,inflater: MenuInflater) {
inflater.inflate(R.menu.search_menu,menu)
val searchItem = menu.findItem(R.id.SM)
if(searchItem != null){
val searchView = searchItem.actionView as SearchView
val editext = searchView.findViewById<EditText>(androidx.appcompat.R.id.search_src_text)
editext.hint = "Search here..."
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
Log.i("seconds",displayList.toString())
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
Log.i("first",displayList.toString())
displayList.clear()
if(newText!!.isNotEmpty()){
val search = newText.toLowerCase()
Log.i("Rosha",search)
itemList.forEach {
if(it.toLowerCase().contains(search)){
displayList.add(it)
}
}
}else{
displayList.addAll(itemList)
}
rv_addingList.adapter?.notifyDataSetChanged()
return true
}
})
}
return super.onCreateOptionsMenu(menu,inflater)
}
class addListAdapter(val con : Context,val list: List<String>) : RecyclerView.Adapter<addListAdapter.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): addListAdapter.ViewHolder {
return ViewHolder(LayoutInflater.from(con).inflate(R.layout.rv_child_addlist,parent,false))
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: addListAdapter.ViewHolder,position: Int) {
holder.item.text = list[position]
}
class ViewHolder(v: View) : RecyclerView.ViewHolder(v){
val item = v.tv_itemlist_item
}
}
fun load(){
itemList.add("Milk")
itemList.add("Eggs")
itemList.add("Cereal")
itemList.add("Bread")
itemList.add("Tomato")
displayList.addAll(itemList)
}
}
rv_child_addinglist(回收者视图XML文件)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/tv_itemlist_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
/>
</LinearLayout>
搜索片段xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.search">
<androidx.appcompat.widget.Toolbar
android:id="@+id/searchTB"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"
android:background="@color/colorPrimary"
android:gravity="center_horizontal"/>
<ImageButton
android:id="@+id/IB_Return"
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:background="@color/colorPrimary"
android:src="@drawable/ic_back_white" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_addingList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?actionBarSize"
android:clipToPadding="false"
android:requiresFadingEdge="vertical"
tools:ignore="NotSibling" />
</RelativeLayout>
</FrameLayout>
search_menu xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="@string/popopo"
android:id="@+id/SM"
android:icon="@drawable/ic_search"
app:showAsAction="always|collapseActionView"
app:actionViewClass="android.widget.SearchView"
/>
</menu>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。