Как использовать SearchView в списке RecyclerView ⇐ Android
Как использовать SearchView в списке RecyclerView
В своем приложении я использую список просмотра Recycler, в котором отображаются рестораны-пиццерии, включая их название, местоположение и рейтинг. В нем я хочу использовать функцию поиска, которая сможет найти ресторан по его названию. Каждый раз, когда я пытаюсь запустить его, я постоянно получаю ошибки в моем представлении поиска. Я пытаюсь заставить SearchView работать, но каждый раз при запуске приложения возникают ошибки.
Это мой адаптер для автофургона:
`class PizzaAdapter(частный var PizzaList: List): RecyclerView.Adapter() { частный прослушиватель lateinit var: PizzaAdapterListener внутренний класс PizzaViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { val textViewName: TextView = itemView.findViewById(R.id.textViewName) val textViewLocation: TextView = itemView.findViewById(R.id.textViewLocation) val рейтингБар: RatingBar = itemView.findViewById(R.id.ratingBar) } // завершаем MyViewHolder
переопределить fun onCreateViewHolder(родитель: ViewGroup, viewType: Int): PizzaViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.activity_current_pizza_palor_list, родительский, false) вернуть PizzaViewHolder(просмотр) } переопределить удовольствие onBindViewHolder(держатель: PizzaViewHolder, позиция: Int) { val пицца = PizzaList[позиция] Holder.textViewName.text = пицца.имя Holder.textViewLocation.text = пицца.местоположение Holder.ratingBar.rating = Pizza.rate!!?.toFloat()!! } переопределить удовольствие getItemCount(): Int { вернуть PizzaList.size } fun setData(list: List) { PizzaList = список уведомитьDataSetChanged() } интерфейс PizzaAdapterListener { весело onClick (позиция: Int) } весело getFilter(): Filter { возвращаемый объект: Filter() { переопределить fun PerformFiltering(constraint: CharSequence?): FilterResults { val filteredList = mutableListOf() if (constraint == null || ограничение.isEmpty()) { filteredList.addAll(Список Пиццы) } еще { val filterPattern = ограничение.toString().toLowerCase().trim() for (элемент в PizzaList) { if (item.name.toLowerCase().contains(filterPattern)) { filteredList.add(элемент) } } } результаты вал = FilterResults() результаты.значения = фильтрованный список вернуть результаты } переопределить fun submitResults(constraint: CharSequence?, results: FilterResults?) { PizzaList = результаты?.значения как List уведомитьDataSetChanged() } весело setOnItemClickListener (_listener: PizzaAdapterListener) { слушатель = _слушатель } } } }`
Это моя основная активность, которую я пытаюсь использовать SearchView:
`class MainActivity : AppCompatActivity() { частный lateinit var recyclerViewPizza: RecyclerView частные данные lateinit var: ArrayList частный lateinit var PizzaAdapter : PizzaAdapter частный lateinit var searchView: SearchView @SuppressLint («Миссингинфлатедид») переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
recyclerViewPizza = findViewById(R.id.recyclerViewPizza) recyclerViewPizza.layoutManager = LinearLayoutManager(this) данные = ArrayList() data.add(Pizza("Пицца Хат", "Олений парк", 3.1)) data.add(Пицца("Папа Джонс", "Дир Парк", 3.9)) data.add(Pizza("Пицца Ричи", "Commack", 4.4)) data.add(Pizza("Пицца Домино", "Дир Парк", 4.2)) val searchView = findViewById(R.id.searchView) searchView.setOnQueryTextListener(объект: SearchView.OnQueryTextListener { переопределить удовольствие onQueryTextSubmit(запрос: String?): Boolean { вернуть ложь } переопределить удовольствие onQueryTextChange(newText: String?): Boolean { фильтр (новыйтекст) вернуть истину } }) } частный фильтр развлечений (запрос: String?) { val filteredList = mutableListOf() если (query.isNullOrEmpty()) { filteredList.addAll (данные) } еще { вал filterPattern = query.trim() for (элемент в данных) { если (item.name.contains(filterPattern, true)) { filteredList.add(элемент) } } } } переопределить удовольствие onCreateOptionsMenu(меню: Меню?): Boolean { val инфлатер = менюИнфлатер inflater.inflate(R.menu.toolmenu, меню) вернуть истину } переопределить удовольствие onOptionsItemSelected(item: MenuItem): Boolean { возврат, когда (item.getItemId()) { R.id.add_item->{ val намерение = Intent(this@MainActivity, AddActivity::class.java) startActivity (намерение) истинный } еще -> super.onOptionsItemSelected(пункт) } } }` Я пробовал использовать документацию и найти обучающие материалы в Интернете, но ни один из них не помог мне. До сих пор мое приложение отказывается даже открываться, и я также попытался вернуться назад и еще раз, чтобы проверить свой код.
В своем приложении я использую список просмотра Recycler, в котором отображаются рестораны-пиццерии, включая их название, местоположение и рейтинг. В нем я хочу использовать функцию поиска, которая сможет найти ресторан по его названию. Каждый раз, когда я пытаюсь запустить его, я постоянно получаю ошибки в моем представлении поиска. Я пытаюсь заставить SearchView работать, но каждый раз при запуске приложения возникают ошибки.
Это мой адаптер для автофургона:
`class PizzaAdapter(частный var PizzaList: List): RecyclerView.Adapter() { частный прослушиватель lateinit var: PizzaAdapterListener внутренний класс PizzaViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) { val textViewName: TextView = itemView.findViewById(R.id.textViewName) val textViewLocation: TextView = itemView.findViewById(R.id.textViewLocation) val рейтингБар: RatingBar = itemView.findViewById(R.id.ratingBar) } // завершаем MyViewHolder
переопределить fun onCreateViewHolder(родитель: ViewGroup, viewType: Int): PizzaViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.activity_current_pizza_palor_list, родительский, false) вернуть PizzaViewHolder(просмотр) } переопределить удовольствие onBindViewHolder(держатель: PizzaViewHolder, позиция: Int) { val пицца = PizzaList[позиция] Holder.textViewName.text = пицца.имя Holder.textViewLocation.text = пицца.местоположение Holder.ratingBar.rating = Pizza.rate!!?.toFloat()!! } переопределить удовольствие getItemCount(): Int { вернуть PizzaList.size } fun setData(list: List) { PizzaList = список уведомитьDataSetChanged() } интерфейс PizzaAdapterListener { весело onClick (позиция: Int) } весело getFilter(): Filter { возвращаемый объект: Filter() { переопределить fun PerformFiltering(constraint: CharSequence?): FilterResults { val filteredList = mutableListOf() if (constraint == null || ограничение.isEmpty()) { filteredList.addAll(Список Пиццы) } еще { val filterPattern = ограничение.toString().toLowerCase().trim() for (элемент в PizzaList) { if (item.name.toLowerCase().contains(filterPattern)) { filteredList.add(элемент) } } } результаты вал = FilterResults() результаты.значения = фильтрованный список вернуть результаты } переопределить fun submitResults(constraint: CharSequence?, results: FilterResults?) { PizzaList = результаты?.значения как List уведомитьDataSetChanged() } весело setOnItemClickListener (_listener: PizzaAdapterListener) { слушатель = _слушатель } } } }`
Это моя основная активность, которую я пытаюсь использовать SearchView:
`class MainActivity : AppCompatActivity() { частный lateinit var recyclerViewPizza: RecyclerView частные данные lateinit var: ArrayList частный lateinit var PizzaAdapter : PizzaAdapter частный lateinit var searchView: SearchView @SuppressLint («Миссингинфлатедид») переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
recyclerViewPizza = findViewById(R.id.recyclerViewPizza) recyclerViewPizza.layoutManager = LinearLayoutManager(this) данные = ArrayList() data.add(Pizza("Пицца Хат", "Олений парк", 3.1)) data.add(Пицца("Папа Джонс", "Дир Парк", 3.9)) data.add(Pizza("Пицца Ричи", "Commack", 4.4)) data.add(Pizza("Пицца Домино", "Дир Парк", 4.2)) val searchView = findViewById(R.id.searchView) searchView.setOnQueryTextListener(объект: SearchView.OnQueryTextListener { переопределить удовольствие onQueryTextSubmit(запрос: String?): Boolean { вернуть ложь } переопределить удовольствие onQueryTextChange(newText: String?): Boolean { фильтр (новыйтекст) вернуть истину } }) } частный фильтр развлечений (запрос: String?) { val filteredList = mutableListOf() если (query.isNullOrEmpty()) { filteredList.addAll (данные) } еще { вал filterPattern = query.trim() for (элемент в данных) { если (item.name.contains(filterPattern, true)) { filteredList.add(элемент) } } } } переопределить удовольствие onCreateOptionsMenu(меню: Меню?): Boolean { val инфлатер = менюИнфлатер inflater.inflate(R.menu.toolmenu, меню) вернуть истину } переопределить удовольствие onOptionsItemSelected(item: MenuItem): Boolean { возврат, когда (item.getItemId()) { R.id.add_item->{ val намерение = Intent(this@MainActivity, AddActivity::class.java) startActivity (намерение) истинный } еще -> super.onOptionsItemSelected(пункт) } } }` Я пробовал использовать документацию и найти обучающие материалы в Интернете, но ни один из них не помог мне. До сих пор мое приложение отказывается даже открываться, и я также попытался вернуться назад и еще раз, чтобы проверить свой код.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как щелкнуть правильный элемент после использования SearchView в Recyclerview с курсором?
Anonymous » » в форуме Android - 0 Ответы
- 3 Просмотры
-
Последнее сообщение Anonymous
-