Можно ли сделать так что бы, когда вводишь букву для поиска в EditText, результаты выводились в ряд GridLayout и по номерам?

gridLayout = findViewById(R.id.govno)

        val searchBox: EditText = findViewById(R.id.searchEditText)

        buttons.sortBy { getElementNumber(it.tag.toString().split("|")[0]) }


        searchBox.addTextChangedListener(object : TextWatcher{
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}

            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                hideAllButtons()

                if (p0.toString().isEmpty()) {
                    return
                }

                val input = p0.toString().lowercase(Locale.getDefault())
                val filteredButtons = buttons.filter {
                    it.tag.toString().lowercase(Locale.getDefault()).contains(input)
                }

                for (button in filteredButtons) {
                    button.visibility = View.VISIBLE
                }
            }

            override fun afterTextChanged(p0: Editable?) {}

        })
    }

    fun getElementNumber(symbol: String): Int {
       val number = when (symbol) {
            "H" -> 1
            "He" -> 2
            "Li" -> 3
            "Be" -> 4
            "B" -> 5
//Дальше кнопки
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SearchActivity"
    android:background="@color/gray">

    <EditText
        android:id="@+id/searchEditText"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.043"
        app:layout_constraintBottom_toTopOf="@id/govno"
        tools:ignore="NotSibling" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/searchEditText">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintTop_toBottomOf="@+id/searchEditText">

    <GridLayout
        android:id="@+id/govno"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alignmentMode="alignBounds"
        android:columnCount="4"
        android:rowOrderPreserved="false"
        app:layout_constraintTop_toBottomOf="@id/searchEditText">


        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.5">

            <ImageButton
                android:id="@+id/buttonH"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="8dp"
                android:background="@drawable/nbutth2"
                android:src="@drawable/nbutth2"
                android:text="H"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.045"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

Ответы (1 шт):

Автор решения: santexnik228

надо в for удалять представдения из родительского элемента:

for (button in filteredButtons) {
                    val parent = button.parent as? ViewGroup
                    parent?.removeView(button)// Удали кнопки из род елемента
                    button.visibility = View.VISIBLE
                    gridLayout.addView(button)
                }

Дальше, поскольку ты чистишь кнопки, перенеси фильтр по порядковому номеру элемента в цикл после чистки:

for (button in filteredButtons) {
                    val parent = button.parent as? ViewGroup
                    parent?.removeView(button)
                    filteredButtons.sortedBy{ getElementNumber(it.tag.toString()) }// фильтр элементов по порядковому номеру
                    gridLayout.addView(button)
                    button.visibility = View.VISIBLE
                    
                }
→ Ссылка