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"
现在在活动中,我可以使用此功能:
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"
好。 现在我想在Adapter中使用Kotlin扩展。
我尝试这个:
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"
}
在这里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文件:
public abstract class DataBindingRecyclerViewAdapter extends RecyclerView.Adapter {
但是我得到了错误:
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
答案 0 :(得分:0)
我遇到了同样的问题,我通过将其添加到 gradle 构建文件中来解决了
androidExtensions {
experimental = true
}