Как исправить «Не удается найти символ xxx.xxxBindingImple» - PullRequest
0 голосов
/ 10 октября 2019

У меня была ошибка при работе с ViewModel в Kotlin.

HCJob.kt

class HCJob {

    private lateinit var jobImgURL: String
    private lateinit var jobTitle: String
    private lateinit var jobLocation: String

    // Constructor
    // Getters * Setters
}

HCYourJobViewModel.kt Класс HCYourJobViewModel: ViewModel {

    private lateinit var job: HCJob

    constructor() : super()

    constructor(job: HCJob) : super() {
        this.job = job
    }

    var yourJobListMutableLiveData = MutableLiveData<ArrayList<HCYourJobViewModel>>()
    var yourJobList = ArrayList<HCYourJobViewModel>()

    fun getYourJobList(): MutableLiveData<ArrayList<HCYourJobViewModel>> {

        val job1 = HCJob("", "Director", "NewYork, NY")
        val job2 = HCJob("", "Vice President", "Chicago")

        val dashboardViewModel1: HCYourJobViewModel =
            HCYourJobViewModel(job1)
        val dashboardViewModel2: HCYourJobViewModel =
            HCYourJobViewModel(job2)

        yourJobList.add(dashboardViewModel1)
        yourJobList.add(dashboardViewModel2)

        yourJobListMutableLiveData.value = yourJobList

        return yourJobListMutableLiveData
    }
}

list_row_job.xml

<?xml version="1.0" encoding="utf-8"?>
<layout
    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">
    <data class="HCYourJobBinding">
        <import type="android.view.View" />
        <variable
            name="job_model"
            type="com.hidden.client.ui.viewmodels.HCYourJobViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout>

        <TextView
            android:id="@+id/text_job_title"
            android:text="@{job_model.job.jobTitle}"/>

        <TextView
            android:id="@+id/text_job_location"
            android:text="@{job_model.job.jobLocation}"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

HCYourJobVH.kt

class HCYourJobVH(private val jobBinding: HCYourJobBinding): RecyclerView.ViewHolder(jobBinding.root) {

    fun bind (jobViewModel: HCYourJobViewModel) {
        this.jobBinding.jobModel = jobViewModel
        jobBinding.executePendingBindings()
    }

}

DashboardFragment.kt

rvYourJobs = root.findViewById(R.id.recyclerview_your_jobs)
        yourJobViewModel = ViewModelProviders.of(this).get(HCYourJobViewModel::class.java)
        yourJobViewModel.getYourJobList().observe(this, Observer {yourJobViewModels->
            yourJobAdapter = HCYourJobAdapter(activity!!.applicationContext, yourJobViewModels)

            layoutYourJobManager = LinearLayoutManager(activity!!.applicationContext, LinearLayoutManager.HORIZONTAL, false)
            rvYourJobs.layoutManager = layoutYourJobManager
            rvYourJobs.setHasFixedSize(true)

            rvYourJobs.adapter = yourJobAdapter
        })

HCYourJobAdapter.kt

class HCYourJobAdapter(
    private val context:Context,
    private val list: ArrayList<HCYourJobViewModel>) : RecyclerView.Adapter<HCYourJobVH>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HCYourJobVH {

        val layoutInflater = LayoutInflater.from(parent.context)
        val jobBinding: HCYourJobBinding = DataBindingUtil.inflate(layoutInflater, R.layout.list_row_job, parent, false)

        return HCYourJobVH(jobBinding)
    }

    override fun onBindViewHolder(holder: HCYourJobVH, position: Int) {

        val jobModel = list[position]
        holder.bind(jobModel)

        holder.itemView.setOnClickListener(View.OnClickListener {
            val intent = Intent(context, HCYourJobActivity::class.java)
            HCGlobal.getInstance(context).g_currentActivity.startActivity(intent)
        })
    }

    override fun getItemCount(): Int {
        return list.size
    }

}

Я также добавил некоторый код в build.gradle

apply plugin: 'kotlin-kapt'
dataBinding {
    enabled = true
}
kapt 'com.android.databinding:compiler:2.3.1'

Когда я запускаю приложение, я получаю сообщение об ошибке ниже

E: \ workspace \ hidden-client \ hidden-client-app-android \ app \ build \ generate \ source \ kapt \ debug\ com \ hidden \ client \ DataBinderMapperImpl.java: 9: ошибка: не удается найти символ import com.hidden.client.databinding.HCYourJobBindingImpl;^ символ: класс HCYourJobBindingImpl расположение: пакет com.hidden.client.databinding

Я искал в Google и пробовал несколько решений, но до сих пор это не работает. Как я могу это исправить?

...