title: How to fix SearchView not displaying result in Fragment Kotlin
body: <p>Please, I'm trying to implement SearchView on a Fragment which is already fetching list from firestore,whenever i type a text into the searchview it notifies the adapter but doesnt return result at all, the Fragment becomes empty till i refresh the fragment then the recyclerview items will return with no changes. I have tried so many solutions found here and other platforms but nothing is working. Thank you in advance.</p>
  <p>Below is my Fragment</p>
  <pre><code>class PersonalFragment : BaseFragment(), SearchView.OnQueryTextListener {
  
      val list = ArrayList&lt;PersonalCategory&gt;()
      val displayList = ArrayList&lt;PersonalCategory&gt;()
  
  
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          // If we want to use the option menu in fragment we need to add it.
          setHasOptionsMenu(true)
  
  
      }
  
      // END
      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ): View? {
          val root = inflater.inflate(R.layout.fragment_personal, container, false)
  
          return root
      }
  
  
      override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
          inflater.inflate(R.menu.create_personal_cat_top_menu, menu)
          val ic_search = menu!!.findItem(R.id.action_search_personal_cat)
          val searchView = ic_search.actionView as SearchView
          searchView.setOnQueryTextListener(this)
          super.onCreateOptionsMenu(menu, inflater)
      }
  
  
      override fun onQueryTextSubmit(filterString: String): Boolean {
          // search button submit
          return true
      }
  
      override fun onQueryTextChange(newText: String): Boolean {
          // search text changed
          if (!newText.isNullOrEmpty()) {
              displayList.clear()
              val search = newText.lowercase(Locale.getDefault())
  
  
              val filteredList = list.filter{ it.personal_category_title.lowercase(Locale.getDefault()).contains(search) }
  
              (rv_my_personalCate_items.adapter as? MyPersonalCategoryListAdapter)?.refreshList(
                  filteredList as ArrayList&lt;PersonalCategory&gt;
              )
  
          }
          else{
              displayList.clear()
              displayList.addAll(list)
              (rv_my_personalCate_items.adapter as? MyPersonalCategoryListAdapter)?.refreshList(displayList)
  
          }
  
          return true
      }
  
  
  
      override fun onOptionsItemSelected(item: MenuItem): Boolean {
          val id = item.itemId
  
          when (id) {
              R.id.action_create_personal_cat -&gt; {
  
                  // Launch the Create Personal Category Activity on click of action item.
                  // START
                  startActivity(Intent(activity, CreatePersonalCategoryActivity::class.java))
                  // END
                  return true
              }
  
  
          }
          return super.onOptionsItemSelected(item)
      }
      // END
  
  
      override fun onResume() {
          super.onResume()
          getPersonalListFromFireStore()
      }
  
      //Getting the list by call the  firestore class
      private fun getPersonalListFromFireStore() {
          // Show the progress dialog.
          showProgressDialog(resources.getString(R.string.please_wait))
  
          // Call the function of Firestore class.
          FirestoreClass().getPersonalCategoryList(this@PersonalFragment)
      }
  
      /**
       * A function to get the successful PERSONAL CATEGORY list from cloud firestore.
       *
       * @param pcategoryList Will receive the academic category from cloud firestore.
       */
      fun successPersonalListFromFireStore(pcategoryList: ArrayList&lt;PersonalCategory&gt;) {
  
          // Hide Progress dialog.
          hideProgressDialog()
          if (pcategoryList.size &gt; 0) {
              rv_my_personalCate_items.visibility = View.VISIBLE
              tv_no_personalCate_found.visibility = View.GONE
  
              rv_my_personalCate_items.layoutManager = LinearLayoutManager(activity)
              rv_my_personalCate_items.setHasFixedSize(true)
  
  
              val adapterPersonalCates =
                  MyPersonalCategoryListAdapter(
                      requireActivity(),
                      pcategoryList,
                      this@PersonalFragment
                  )
              // END
              rv_my_personalCate_items.adapter = adapterPersonalCates
  }
              else {
              rv_my_personalCate_items.visibility = View.GONE
              tv_no_personalCate_found.visibility = View.VISIBLE
          }
  
      }
  
      //END
  }
  </code></pre>
  <p>Below is my Adapter</p>
  <pre><code>open class MyPersonalCategoryListAdapter(
      private val context: Context,
      private var list: ArrayList&lt;PersonalCategory&gt;,
      private val fragment: PersonalFragment
  ) : RecyclerView.Adapter&lt;RecyclerView.ViewHolder&gt;() {
  
  
  
      override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
          return MyViewHolder(
              LayoutInflater.from(context).inflate(
                  R.layout.item_list_personal_categories_layout,
                  parent,
                  false
              )
          )
      }
  
  
   
      override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
          val model = list[position]
  
  
  
          if (holder is MyViewHolder) {
  
  
              holder.itemView.tv_perscate_name.text = model.personal_category_title
              // END
              holder.itemView.setOnClickListener {
                  // Launch Academic Task Screen details screen.
                  val intent = Intent(context, PersonalTaskActivity::class.java)
                  intent.putExtra(Constants.EXTRA_PERSONAL_CATEGOTY_ID, model.personal_category_id)
                  context.startActivity(intent)
              }
          }
      }
  
  
   
      override fun getItemCount(): Int {
          return list.size
  
      }
      fun refreshList(displayList:ArrayList&lt;PersonalCategory&gt;){
          this.list.clear()
          this.list.addAll(displayList)
          notifyDataSetChanged()
      }
  
  
     
      class MyViewHolder(view: View) : RecyclerView.ViewHolder(view)
  
  
  }
  </code></pre>
  <p>Below is SearchView XML</p>
  <pre><code>&lt;item
          android:id=&quot;@+id/action_search_personal_cat&quot;
          android:icon=&quot;@drawable/ic_search&quot;
          android:title=&quot;@string/action_search_academic&quot;
          app:showAsAction=&quot;always&quot;
          app:actionViewClass=&quot;androidx.appcompat.widget.SearchView&quot;/&gt;
      
  </code></pre>
  <p>Below is Logcat result</p>
  <pre><code>2022-09-18 19:41:13.765 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  2022-09-18 19:41:13.766 16034-16034/com.catetaskv2 I/chatty: uid=10088(com.catetaskv2) identical 2 lines
  2022-09-18 19:41:13.766 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  2022-09-18 19:41:13.769 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  2022-09-18 19:41:13.773 16034-16034/com.catetaskv2 I/chatty: uid=10088(com.catetaskv2) identical 6 lines
  2022-09-18 19:41:13.773 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  2022-09-18 19:41:13.813 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  2022-09-18 19:41:13.819 16034-16034/com.catetaskv2 I/chatty: uid=10088(com.catetaskv2) identical 10 lines
  2022-09-18 19:41:13.820 16034-16034/com.catetaskv2 W/StaticLayout: maxLineHeight should not be -1.  maxLines:1 lineCount:1
  </code></pre>