具有Recycler视图的SearchView在Fragment中不起作用



我正在尝试在适配器和片段之间建立连接,但在尝试为SearchView筛选数据时遇到以下错误:应为函数调用"filter(…("。现在我正在学习安卓系统,任何输入都会对我有帮助。谢谢!

class RecyclerViewFragment : Fragment() {
private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val searchIcon = country_search.findViewById<ImageView>(R.id.search_mag_icon)
searchIcon.setColorFilter(Color.WHITE)
val cancelIcon = country_search.findViewById<ImageView>(R.id.search_close_btn)
cancelIcon.setColorFilter(Color.WHITE)
val textView = country_search.findViewById<TextView>(R.id.search_src_text)
textView.setTextColor(Color.WHITE)
searchCountry(country_search)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_recycler_view, container, false)
}
private fun searchCountry(search: SearchView) {
search.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
adapter.filter.filter(newText)
adapter?.notifyDataSetChanged()
return true
}
})
} 
}

错误日志:

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public inline fun <T> Array<out TypeVariable(T)>.filter(predicate: (TypeVariable(T)) -> Boolean): List<TypeVariable(T)> defined in kotlin.collections
public inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List<Boolean> defined in kotlin.collections
public inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List<Byte> defined in kotlin.collections
public inline fun CharArray.filter(predicate: (Char) -> Boolean): List<Char> defined in kotlin.collections
public inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequence defined in kotlin.text
public inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List<Double> defined in kotlin.collections
public inline fun FloatArray.filter(predicate: (Float) -> Boolean): List<Float> defined in kotlin.collections
public inline fun IntArray.filter(predicate: (Int) -> Boolean): List<Int> defined in kotlin.collections
public inline fun LongArray.filter(predicate: (Long) -> Boolean): List<Long> defined in kotlin.collections
public inline fun ShortArray.filter(predicate: (Short) -> Boolean): List<Short> defined in kotlin.collections
public inline fun String.filter(predicate: (Char) -> Boolean): String defined in kotlin.text
public inline fun UByteArray.filter(predicate: (UByte) -> Boolean): List<UByte> defined in kotlin.collections
public inline fun UIntArray.filter(predicate: (UInt) -> Boolean): List<UInt> defined in kotlin.collections
public inline fun ULongArray.filter(predicate: (ULong) -> Boolean): List<ULong> defined in kotlin.collections
public inline fun UShortArray.filter(predicate: (UShort) -> Boolean): List<UShort> defined in kotlin.collections
public inline fun <T> Iterable<TypeVariable(T)>.filter(predicate: (TypeVariable(T)) -> Boolean): List<TypeVariable(T)> defined in kotlin.collections
public inline fun <K, V> Map<out TypeVariable(K), TypeVariable(V)>.filter(predicate: (Map.Entry<TypeVariable(K), TypeVariable(V)>) -> Boolean): Map<TypeVariable(K), TypeVariable(V)> defined in kotlin.collections
public fun <T> Sequence<TypeVariable(T)>.filter(predicate: (TypeVariable(T)) -> Boolean): Sequence<TypeVariable(T)> defined in kotlin.sequences

此代码有一些错误。如果你想尝试并遵循这些步骤(可以在onCreateView中完成(。

  1. 初始化与此布局关联的回收视图。RecyclerView RecyclerView=findViewById(R.id.recycler_view(;

  2. 初始化要与此回收视图链接的适配器。adapter=新的MyAwesomeAdapter(myAwesomeCountryList(;

  3. 将适配器添加到回收视图中。recyclerView.setAdapter(适配器(;

  4. 将布局管理器添加到回收视图中。recyclerView.setLayoutManager(layoutManager(

如果你已经做到了,你就很接近了(希望它能解决问题,但还有更多的事情我们看不到,比如你如何设置关联的布局(。

最新更新