Cómo puedo solucionar androidx.appcompat.widget.SearchView no se puede convertir a android.widget.SearchView

0

Pregunta

Sé que hay un montón de preguntas acerca de ese error. Intentado muchas soluciones, me di cuenta de que había algo diferente en mi caso. Puede alguien por favor ayuda? Traté de aplicar searchview a recyclerviewy se insertan filter() en reyclerview adapter y setOnQueryTextListener en mainactivity.

Pero tengo el siguiente error: androidx.appcompat.widget.SearchView cannot be cast to android.widget.SearchView

MainActivity.kt

import android.app.Activity
import android.content.Context
import android.content.Intent
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.co_investorux_ui.databinding.ActivityMainBinding
import com.example.co_investorux_ui.databinding.ItemViewBinding
import com.sothree.slidinguppanel.SlidingUpPanelLayout
import java.util.*
import kotlin.collections.ArrayList
import android.app.SearchManager
import android.widget.SearchView
import android.widget.SearchView.OnQueryTextListener

...

val searchview :SearchView = findViewById(R.id.search_view)
        searchview.setOnQueryTextListener(object:SearchView.OnQueryTextListener{
            override fun onQueryTextSubmit(query: String?): Boolean {
                return false
            }

            override fun onQueryTextChange(newText: String?): Boolean {
                adapter.filter.filter(newText)
                return false
            }
        })

...

getFilter()

override fun getFilter(): Filter {
            return object : Filter() {
                override fun performFiltering(charSequence: CharSequence): FilterResults {
                    val charString = charSequence.toString()
                    if (charString.isEmpty()) {
                        searchList = itemList
                    } else {
                        val filteredList = ArrayList<CoinList>()

                        for (coin in itemList) {
                            if (coin.name.contains(charString)) {
                                filteredList.add(coin)
                            }
                        }
                        searchList = filteredList
                    }
                    val filterResults = FilterResults()
                    filterResults.values = searchList
                    return filterResults
                }

                override fun publishResults(
                    charSequence: CharSequence,
                    filterResults: FilterResults
                ) {
                    searchList = filterResults.values as ArrayList<CoinList>
                    notifyDataSetChanged()
                }
            }
        }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    app:umanoDragView="@id/slide_layout"
    app:umanoPanelHeight="16dp"
    tools:context=".MainActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/first_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <androidx.appcompat.widget.SearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toTopOf="@id/recyclerview"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/inside_layout"/>

    </androidx.constraintlayout.widget.ConstraintLayout>

</com.sothree.slidinguppanel.SlidingUpPanelLayout>

No sé lo que es mi culpa. ¿Cómo puedo solucionar esto?

android android-studio kotlin searchview
2021-11-24 06:30:49
2

Mejor respuesta

1

En sus importaciones,

Reemplazar

import android.widget.SearchView

Con

import androidx.appcompat.widget.SearchView
2021-11-24 06:37:12
0

En xml, se utiliza androidx SearchView

 androidx.appcompat.widget.SearchView

pero en su kotlin código de android.widget.SearchView

import android.widget.SearchView

Es por eso que no pueden lanzar

2021-11-24 06:52:36

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................