Тип Lazy не находит метод getValue

[введите сюда описание изображения Type 'Lazy<TypeVariable(T)>' has no method 'getValue(CrimeListFragment, KProperty<*>)' and thus it cannot serve as a delegate У меня была какая-то проблема, когда AS выдавала ошибки, хотя их там вообще не должно было быть (резко, без причины). У меня это было 1 раз, я удалил какой-то файл (с настройками вроде), и все заработало. Сегодня я вновь столкнулся с этой проблемой. Я забыл какой файл удалял, поэтому пробовал вызывать Invalidate Cache/Restart и Clean Project. Сначала мне этого помогало, потом через пару минут опять высветились те же ошибки. В этот раз я удалил папку cache в .gradle. Мне это помогло, но опять же, на пару минут. Потом появилась эта ошибка, не знаю что не так, ничего не удалял, и не менял, в bulild.gradle, и импорты тоже не трогал. Помогите пожалуйста, прошу...

package com.example.criminalintent


import android.os.Bundle
import android.util.Log
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

private const val TAG = "CrimeLisFragment"

class CrimeListFragment : Fragment(){



private lateinit var crimeRecyclerView: RecyclerView

private var adapter: CrimeAdapter? = null
private val crimeListViewModel: CrimeListViewModel by lazy {
    ViewModelProviders.of(this).get(CrimeListViewModel::class.java)
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Log.d(TAG, "Total crimes: ${crimeListViewModel.crimes.size}")
}

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    val view = inflater.inflate(R.layout.fragment_crime_list, container, false)

    crimeRecyclerView = view.findViewById(R.id.crime_recycler_view) as RecyclerView
    crimeRecyclerView.layoutManager = LinearLayoutManager(context)

    updateUI()

    return view
}

private fun updateUI() {
    val crimes = crimeListViewModel.crimes
    adapter = CrimeAdapter(crimes)
    crimeRecyclerView.adapter = adapter
}

private inner class CrimeHolder(view: View) : RecyclerView.ViewHolder(view), View.OnClickListener {

    private val titleTextView: TextView = itemView.findViewById(R.id.crime_title)
    private val dateTextView: TextView = itemView.findViewById(R.id.crime_date)

    private val titleTextViewPolice: TextView = itemView.findViewById(R.id.crime_title_police)
    private val dateTextViewPolice: TextView = itemView.findViewById(R.id.crime_date_police)

    private lateinit var crime: Crime

    init {
        itemView.setOnClickListener(this)
    }

    fun bind(crime: Crime) {
        this.crime = crime

        titleTextView.text = this.crime.title
        dateTextView.text = this.crime.date.toString()

        titleTextViewPolice.text = this.crime.title
        dateTextViewPolice.text = this.crime.date.toString()
    }

    fun bindCrimePolice(crime: Crime) {
        this.crime = crime

        titleTextViewPolice.text = this.crime.title
        dateTextViewPolice.text = this.crime.date.toString()
    }

    override fun onClick(v: View) {
        val toast = Toast.makeText(context, "${crime.title} pressed", Toast.LENGTH_SHORT)
        toast.setGravity(Gravity.CENTER, 0, 0)
        toast.show()
    }
}

private inner class CrimeAdapter(var crimes: List<Crime>) : RecyclerView.Adapter<CrimeHolder>() {

    val crime = Crime()



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

        Log.i(TAG, "onCreateViewHolder(parent: ViewGroup, viewType: Int) called $viewType")

        val view = if (viewType == 0) {
            LayoutInflater.from(parent.context).inflate(R.layout.list_item_crime, parent, false)
        } else {
            LayoutInflater.from(parent.context).inflate(R.layout.list_item_crime_police, parent, false)
        }

        //val view = layoutInflater.inflate(R.layout.list_item_crime , parent, false)

        return CrimeHolder(view)

    }

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

        Log.i(TAG, "onBindViewHolder(holder: CrimeHolder, position: Int) called pos $position")

        val crime = crimes[position]

        holder.bind(crime)

    }

    override fun getItemCount(): Int = crimes.size

    override fun getItemViewType(position: Int): Int {

        Log.i(TAG, "getItemViewType(position: Int) called pos $position")

        if (crime.isCrime) {
            return 0
        }
        return 1
    }

}

companion object {
    fun newInstance() : CrimeListFragment {
        return CrimeListFragment()
    }
}

}


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