我想用searchview查找android studio中添加的数据。(livedata)(菜单)帮帮我

我想用searchview查找android studio中添加的数据。(livedata)(菜单)帮帮我,android,kotlin,Android,Kotlin,@刀 接口用户DAO{ @Insert(onConflict = OnConflictStrategy.IGNORE) suspend fun addUser(user: User) @Update suspend fun updateUser(user: User) @Delete suspend fun deleteUser(user: User) @Query("DELETE FROM user_table") suspend fun deleteAllUsers

@刀 接口用户DAO{

@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun addUser(user: User)

@Update
suspend fun updateUser(user: User)

@Delete
suspend fun deleteUser(user: User)

@Query("DELETE FROM user_table")
suspend fun deleteAllUsers()

@Query("SELECT * FROM user_table ORDER BY id ASC")
fun readAllData(): LiveData<List<User>>
val readAllData: LiveData<List<User>> = userDao.readAllData()

suspend fun addUser(user: User){
    userDao.addUser(user)
}

suspend fun updateUser(user: User){
    userDao.updateUser(user)
}

suspend fun deleteUser(user: User){
    userDao.deleteUser(user)
}

suspend fun deleteAllUsers(){
    userDao.deleteAllUsers()
}
}

类UpdateFragment:Fragment(){

private val args by navArgs()
私有lateinit var mUserViewModel:UserViewModel
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
//为该碎片膨胀布局
val视图=充气机。充气(R.layout.fragment\u更新,容器,错误)
mUserViewModel=ViewModelProvider(this).get(UserViewModel::class.java)
view.update_eturun.setText(args.currentUser.urunIsmi)
view.update_etalis.setText(args.currentUser.alisFiyati)
view.update_etsatis.setText(args.currentUser.satisFiyati)
view.update_eklebtn.setOnClickListener{
updateItem()
}
//添加菜单
设置选项菜单(真)
返回视图
}
私人娱乐更新项目(){
val urunIsmi=update_eturun.text.toString()
val alisFiyati=update_etalis.text.toString()
val satisFiyati=update_etsatis.text.toString()
if(输入检查(urunIsmi、alisFiyati、satisFiyati)){
//创建用户对象
val updateUser=User(args.currentUser.id、urunIsmi、alisFiyati、satisFiyati)
//更新当前用户
mUserViewModel.updateUser(updateUser)
Toast.makeText(requireContext(),“GÜNCELLEME BAŞARILI:)”,Toast.LENGTH_SHORT.show()
//回击
findNavController().导航(R.id.action\u updateFragment\u到\u listFragment)
}否则{
Toast.makeText(requireContext(),“LÜTFEN TÜM Alanali DOLDURUN:/”,Toast.LENGTH_SHORT.show()
}
}
private fun inputCheck(urunIsmi:String,alisFiyati:String,satisFiyati:String):布尔值{
return!(TextUtils.isEmpty(urunIsmi)和&TextUtils.isEmpty(alisFiyati)和&TextUtils.isEmpty(satisFiyati))
}
覆盖创建选项菜单(菜单:菜单,充气机:菜单充气机){
充气机。充气(右菜单。删除菜单,菜单)
}
覆盖选项ItemSelected(项:菜单项):布尔值{
if(item.itemId==R.id.menu_delete){
deleteUser()
}
返回super.onOptionsItemSelected(项目)
}
私有用户(){
val builder=AlertDialog.builder(requireContext())
builder.setPositiveButton(“EVET”){{},{->
mUserViewModel.deleteUser(args.currentUser)
Toast.makeText(
requireContext(),
“BAŞARIYLA KALDIRILDI:)${args.currentUser.urunIsmi}”,
吐司。长度(短)。show()
findNavController().导航(R.id.action\u updateFragment\u到\u listFragment)
}
builder.setNegativeButton(“HAYIR”){{{{,}
setTitle(“SİL${args.currentUser.urunIsmi}?”)
生成器。设置消息(“SİLMEKİSTEDİGİNE EMİN MİSİN?”)
builder.create().show()
}
}

class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
getSupportActionBar()?.setTitle(“ANASAYFA”)
val按钮=findViewById(R.id.main\u btn\u gidabtn)
button.setOnClickListener{
val intent=intent(这是TemelGidaSayfasi::class.java)
星触觉(意图)
}
}
}


我将searchview添加到菜单中,当用户添加多个数据时,我希望他们随时查看这些数据,但我不知道如何建立searchview连接。(实时数据)

val readAllData: LiveData<List<User>>
private val repository: UserRepository

init {
    val userDao = UserDatabase.getDatabase(
        application
    ).userDao()
    repository = UserRepository(userDao)
    readAllData = repository.readAllData
}

fun addUser(user: User){
    viewModelScope.launch(Dispatchers.IO) {
        repository.addUser(user)
    }
}

fun updateUser(user: User){
    viewModelScope.launch(Dispatchers.IO) {
        repository.updateUser(user)
    }
}

fun deleteUser(user: User){
    viewModelScope.launch(Dispatchers.IO) {
        repository.deleteUser(user)
    }
}

fun deleteAllUsers(){
    viewModelScope.launch(Dispatchers.IO) {
        repository.deleteAllUsers()
    }
}
private lateinit var mUserViewModel: UserViewModel

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    val view = inflater.inflate(R.layout.fragment_list, container, false)

    //Recyclerview
    val adapter = ListAdapter()
    val recyclerView = view.liste
    recyclerView.adapter = adapter
    recyclerView.layoutManager = LinearLayoutManager(requireContext())

    // UserViewModel
    mUserViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
    mUserViewModel.readAllData.observe(viewLifecycleOwner, Observer {user ->
        adapter .setData(user)
    })

    view.floatingActionButton.setOnClickListener{
        findNavController().navigate(R.id.action_listFragment_to_addFragment2)
    }

    //Add menu
    setHasOptionsMenu(true)

    return view
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.delete_menu, menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if(item.itemId == R.id.menu_delete){
        deleteAllUsers()
    }
    return super.onOptionsItemSelected(item)
}

private fun deleteAllUsers() {
    val builder = AlertDialog.Builder(requireContext())
    builder.setPositiveButton("EVET") { _, _ ->
        mUserViewModel.deleteAllUsers()
        Toast.makeText(
                requireContext(),
                "BAŞARIYLA HERŞEY KALDIRILDI :) ",
                Toast.LENGTH_SHORT).show()
    }
    builder.setNegativeButton("HAYIR") { _, _ -> }
    builder.setTitle("HERŞEYİ SİL ?")
    builder.setMessage("HERŞEYİ SİLMEK İSTEDİGİNE EMİN MİSİN ? ")
 builder.create().show()
}
private val args by navArgs<UpdateFragmentArgs>()

private lateinit var mUserViewModel: UserViewModel

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    val view = inflater.inflate(R.layout.fragment_update, container, false)

    mUserViewModel = ViewModelProvider(this).get(UserViewModel::class.java)

    view.update_eturun.setText(args.currentUser.urunIsmi)
    view.update_etalis.setText(args.currentUser.alisFiyati)
    view.update_etsatis.setText(args.currentUser.satisFiyati)

    view.update_eklebtn.setOnClickListener {
        updateItem()
    }

    //Add menu
    setHasOptionsMenu(true)

    return view
}

private fun updateItem() {
    val urunIsmi = update_eturun.text.toString()
    val alisFiyati = update_etalis.text.toString()
    val satisFiyati = update_etsatis.text.toString()

    if (inputCheck(urunIsmi, alisFiyati, satisFiyati)) {
        // Create User Object
        val updatedUser = User(args.currentUser.id, urunIsmi, alisFiyati, satisFiyati)
        // Update Current User
        mUserViewModel.updateUser(updatedUser)
        Toast.makeText(requireContext(), "GÜNCELLEME BAŞARILI :)", Toast.LENGTH_SHORT).show()
        // Nvigate Back
        findNavController().navigate(R.id.action_updateFragment_to_listFragment)
    }else{
        Toast.makeText(requireContext(), "LÜTFEN TÜM ALANLARI DOLDURUN :/ ", Toast.LENGTH_SHORT).show()
    }
}

private fun inputCheck(urunIsmi: String, alisFiyati: String, satisFiyati: String ): Boolean{
    return !(TextUtils.isEmpty(urunIsmi) && TextUtils.isEmpty(alisFiyati) && TextUtils.isEmpty(satisFiyati))
}


override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    inflater.inflate(R.menu.delete_menu, menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if(item.itemId == R.id.menu_delete){
        deleteUser()
    }
    return super.onOptionsItemSelected(item)
}

private fun deleteUser() {
    val builder = AlertDialog.Builder(requireContext())
    builder.setPositiveButton("EVET"){_,_->
        mUserViewModel.deleteUser(args.currentUser)
        Toast.makeText(
                requireContext(),
                "BAŞARIYLA KALDIRILDI :) ${args.currentUser.urunIsmi}",
                Toast.LENGTH_SHORT).show()
        findNavController().navigate(R.id.action_updateFragment_to_listFragment)
    }
    builder.setNegativeButton("HAYIR"){_,_->}
    builder.setTitle("SİL ${args.currentUser.urunIsmi} ?")
    builder.setMessage("SİLMEK İSTEDİGİNE EMİN MİSİN ? ")
    builder.create().show()
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    getSupportActionBar()?.setTitle("ANASAYFA")

    val button=findViewById<Button>(R.id.main_btn_gidabtn)

    button.setOnClickListener {
        val intent = Intent(this,TemelGidaSayfasi::class.java)

        startActivity(intent)


    }

}
    <item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_baseline_search_24"
    android:title="SEARCH"
    app:actionViewClass="androidx.appcompat.widget.SearchView"
    app:showAsAction="always"/>

<item android:id="@+id/menu_delete"
    android:title="SİL"
    android:icon="@drawable/ic_baseline_delete_24"
    android:iconTint="@android:color/white"
    app:showAsAction="ifRoom"/>