0

Android Studio 3.6

build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: "kotlin-kapt"



android {
    dataBinding {
        enabled = true
    }
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.myproject"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

Now in Activity I can use this:

import kotlinx.android.synthetic.main.event_details_activity.*

class EventDetailsActivity : AppCompatActivity() {
    private lateinit var dataBinding: EventDetailsActivityBinding

    companion object {
        val EVENT = EventDetailsActivity.javaClass.canonicalName + "_EVENT"
        private val TAG = EventDetailsActivity::class.java.name
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        dataBinding =
            DataBindingUtil.setContentView(this, R.layout.event_details_activity)

         // THIS WORK FINE
        eventTitleTextView.text = "Test"

Nice. Now I want to use Kotlin extension in Adapter.

I try this:

import kotlinx.android.synthetic.main.event_list_item.*

class EventAdapter(
    context: Context?,
    data: List<*>?
) : DataBindingRecyclerViewAdapter(context, data) {
    private var listener: AdapterListener? = null

    override fun onBindViewHolder(
        holder: RecyclerView.ViewHolder,
        position: Int
    ) {
        super.onBindViewHolder(holder, position)
        descriptionTextView.text = "TEST"
    }

Here event_list_item.xml

   <TextView
            android:id="@+id/descriptionTextView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@{model.description}"
            android:textColor="@android:color/darker_gray"
            android:textSize="14sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="@+id/titleTextView"
            app:layout_constraintStart_toStartOf="@+id/titleTextView"
            app:layout_constraintTop_toBottomOf="@+id/titleTextView" />

java file:

public abstract class DataBindingRecyclerViewAdapter extends RecyclerView.Adapter {

But I get error:

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
public val Activity.descriptionTextView: TextView! defined in kotlinx.android.synthetic.main.event_list_item
public val Dialog.descriptionTextView: TextView! defined in kotlinx.android.synthetic.main.event_list_item
public val android.app.Fragment.descriptionTextView: TextView! defined in kotlinx.android.synthetic.main.event_list_item
public val androidx.fragment.app.Fragment.descriptionTextView: TextView! defined in kotlinx.android.synthetic.main.event_list_item
Alexei
  • 14,350
  • 37
  • 121
  • 240

1 Answers1

0

I have the same problem and i solved it by add this into gradle build file

androidExtensions {
    experimental = true
}
Đàm Tùng
  • 329
  • 1
  • 3
  • 7