Как использовать SearchView в списке RecyclerViewAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать SearchView в списке RecyclerView

Сообщение Anonymous »


В своем приложении я использую список просмотра 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(пункт) } } }` Я пробовал использовать документацию и найти обучающие материалы в Интернете, но ни один из них не помог мне. До сих пор мое приложение отказывается даже открываться, и я также попытался вернуться назад и еще раз, чтобы проверить свой код.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • SearchView с RecyclerView Kotlin
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как щелкнуть правильный элемент после использования SearchView в Recyclerview с курсором?
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Kotlin RecyclerView в RecyclerView после обновления представление переходит в дочерний RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Автоматически развернуть и передать фокус SearchView
    Гость » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • Макет таблицы адаптера Android Studio с помощью searchView
    Гость » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»