Code: Select all
@SuppressLint("NotifyDataSetChanged")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Init la searchVal
searchVal = ""
// Set RecyclerView
setRecyclerView(view)
// Observe LiveData of all items
viewModel.getFilteredReferenceItem(searchVal).observe(viewLifecycleOwner, Observer {
refAdapter.referenceItems = viewModel.sortReferenceItemList(it)
refAdapter.notifyDataSetChanged()
})
Code: Select all
.referenceItems
Die Methode getFilteredReference () sieht im DAO :
so aus
Code: Select all
@Query(value="SELECT * FROM reference_items WHERE reference_item_name LIKE '%' || :searchVal || '%' ORDER BY category ASC, reference_item_name ASC")
fun getFilteredReferenceItem(searchVal : String): LiveData
Die SortreferenceItemList () besteht darin, eine bestimmte Elementgruppe Header hinzuzufügen. Dies ist nur für die Ästhetik. Aber , es dauert einen Mutablelist als Argument und nicht ein Lebendata .
Code: Select all
refAdapter.referenceItems = viewModel.sortReferenceItemList(it)
//SearchView
searchView = view.findViewById(R.id.search_ref)
searchView.setOnQueryTextListener(object : OnQueryTextListener,
SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
TODO("Not yet implemented")
}
@SuppressLint("NotifyDataSetChanged")
override fun onQueryTextChange(newText: String?): Boolean {
searchVal = if (newText != null) {
newText.toString()
} else{
""
}
refAdapter.notifyDataSetChanged()
return true
}
})
< /code>
P.S: Ich bin kein Entwickler. Ich habe diese App vor 3 Jahren entwickelt und seitdem nie Kotlin oder Android Studio berührt. Aber ich denke, dies ist ein schönes Update für meine kleine persönliche App, die ich gerne beenden würde.