установить панель поиска на панель инструментов в родительской активности - PullRequest
0 голосов
/ 07 марта 2019

У меня есть базовая активность навигационного ящика.Затем у меня есть список активности, который расширяется от активности навигационного ящика, поэтому навигационный ящик также отображается в этом (списке) действии.В базовой активности рисования навигационной панели (внутри панели инструментов) я разработал панель поиска

   <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:popupTheme="@style/AppTheme.PopupOverlay">

            <com.mancj.materialsearchbar.MaterialSearchBar 
                    android:id="@+id/srchbar"
                    android:layout_width="match_parent"
                                                           android:layout_height="wrap_content"></com.mancj.materialsearchbar.MaterialSearchBar>
        </android.support.v7.widget.Toolbar>

Я объявил эту панель инструментов в активности родительской навигационной панели, biut инициализировал ее в активности дочернего списка

searchBar=findViewById(R.id.foodlist_srchbar)

Этот поискпанель должна загружать последние предложения и выполнять поиск, когда текст вводится в текстовое поле, и загружать представление списка с результатами, когда поиск подтвержден

    searchBar.setOnSearchActionListener(object : MaterialSearchBar.OnSearchActionListener{
            override fun onButtonClicked(buttonCode: Int) {

            }

            override fun onSearchStateChanged(enabled: Boolean) {
//When searchBar is closed , restore original adapter
                if (!enabled){
                    recycler_food.adapter=adapter
                }
            }

            override fun onSearchConfirmed(text: CharSequence?) {
// When search is finished , show adapter with results
                startSSearch(text)
            }
        })

Метод StartSSearch имеет значение

private fun startSSearch(text: CharSequence?) {
   searchadapter=object : FirebaseRecyclerAdapter<Food, FoodViewHolder>
(
    Food::class.java,
    R.layout.food_item,
    FoodViewHolder::class.java,
    database_food.orderByChild("Name").equalTo(text.toString())
){
     override fun populateViewHolder(viewHolder: FoodViewHolder?, model: Food?, position: Int) {
         viewHolder!!.foodName.setText(model!!.Name)
         Picasso.with(baseContext).load(model.Image).into(viewHolder.foodImage)
         viewHolder.itemView.setOnClickListener(object : View.OnClickListener {
             override fun onClick(v: View?) {

                 val foodDeatail = Intent(this@FoodList, FoodDetailActivity::class.java)
                 foodDeatail.putExtra("FoodId", searchadapter.getRef(position).key)
                 startActivity(foodDeatail)
             }
         })
     }

Так чтовсе работает, как правило, не в сложных ситуациях, но в моей текущей ситуации (я объявил этот инструмент поиска в родительской активности nav и ввел его в дочернюю активность и записал методы для этого инструмента в дочерней активности), он не работает, он не отображает результаты поиска, можете ли вы помочья?

...