Übergeben Sie den Wert vom Recycler-Ansichtsadapter an die Aktivität – Android Kotlin

[ad_1]

In diesem Tutorial zeigen wir Ihnen, wie Sie Werte vom Recycler-Ansichtsadapter an die Aktivität in Kotlin übergeben können. Zuerst müssen Sie eine Schnittstelle erstellen:

// file name = RVInterface.kt

package com.adnantech.myapp

import android.view.View

interface RVInterface {
    fun onClick(view: View)
}

„RVInterface“ ist hier die Abkürzung für „Recycler View Interface“. Nehmen wir nun an, wir haben die folgende Modellklasse:

// file name = User.kt

package com.adnantech.myapp

class User(val name: String) {
    //
}

Und wir erstellen eine Array-Liste mit 3 Benutzern.

val users: ArrayList<User> = ArrayList()
users.add(User("Adnan"))
users.add(User("Tech"))
users.add(User("Developer"))

Dann müssen Sie eine Instanz Ihrer Schnittstelle in Ihrer Aktivitätsklasse erstellen:

private val rvInterfaceInstance: RVInterface = object : RVInterface {
    override fun onClick(view: View) {
        val index: Int = recyclerView.getChildAdapterPosition(view)
        if (users.size > index) {
            Log.i("mylog", users[index].name)
        }
    }
}

Dadurch wird die in der Schnittstelle erstellte „onClick“-Funktion überschrieben. Wenn diese Funktion aufgerufen wird, ruft sie den Index des Elements in der Recycler-Ansicht ab. Stellen Sie sicher, dass der Index im Array „users“ nicht ausgehend sein darf. Zeigen Sie dann den Benutzernamen in logcat an.

Danach müssen Sie diese Schnittstelleninstanz an Ihren Adapter übergeben:

val adapter: UsersAdapter = UsersAdapter(users, rvInterfaceInstance)

Da wir die Schnittstelleninstanz als Parameter senden, können wir sie problemlos im Konstruktor unseres Adapters abrufen:

class UsersAdapter(
    private var users: ArrayList<User>,
    private var rvInterfaceInstance: RVInterface
)

Und schließlich können wir in Ihrem Adapter innerhalb der Methode „onBindViewHolder“ die folgende Funktion aufrufen, um die Schnittstellenmethode innerhalb der Aktivitätsklasse aufzurufen:

holder.itemView.setOnClickListener {
    rvInterfaceInstance.onClick(holder.itemView)
}

Dadurch wird die Schnittstellenmethode aufgerufen, wenn auf das Element im Adapter geklickt wird. Sie können es aber auch zu jedem Button-Click-Listener hinzufügen.


Beitragsaufrufe: 47

[ad_2]