переработчик: адаптер не подключен; пропускающий макет не может просматривать список приложение закрывает себя - PullRequest
1 голос
/ 28 апреля 2020

У меня проблемы с функцией показа списка переменных, добавленных через вставку. Ошибка, которая постоянно отображается в моем logcat, следующая: адаптер не подключен; пропуск макета: RecyclerView.

Вот код моего адаптера.

package com.example.conexionbd

import android.app.Activity
import android.content.Intent
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.conexionbd.data.Cultivo
import kotlinx.android.synthetic.main.list_item_cultivo.view.*
import java.lang.reflect.Type
import java.text.FieldPosition


class CultivosAdapter(val cultivos: List<Cultivo>, val activity: Activity): RecyclerView.Adapter<CultivosAdapter.CultivoViewHolder>() {



    class CultivoViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
        fun bindCultivo(cultivo: Cultivo, activity: Activity){
            itemView.setOnClickListener {

                val intent = Intent(itemView.context, InsertEditActivity::class.java)
                intent.putExtra(Constants.ID, cultivo.id)
                intent.putExtra(Constants.NOMBRE, cultivo.name)
                intent.putExtra(Constants.PLAGA, cultivo.plaga)
                intent.putExtra(Constants.NUEVO_CULTIVO, Constants.NO)
                itemView.context.startActivity(intent)
                activity.finish()
            }
            itemView.litNombre.text = cultivo.name
             itemView.litPlaga.text  = cultivo.plaga
        }

    }

    override fun onCreateViewHolder (parent: ViewGroup, viewType: Int): CultivoViewHolder {
        var layoutInflate = LayoutInflater.from(parent.context)
            .inflate(R.layout.list_item_cultivo, parent, false)
        return CultivoViewHolder(layoutInflate)
    }


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

    override fun onBindViewHolder(holder: CultivoViewHolder, position: Int) {
        val cultivo = cultivos[position]
        holder.bindCultivo(cultivo, activity)
    }


}

И код действия, где RecyclerView называется

import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import com.example.conexionbd.data.Cultivo
import com.example.conexionbd.data.CultivoDB
import kotlinx.android.synthetic.main.activity_cultivos.*

class CultivosActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_cultivos)

        var cultivos: List<Cultivo> = CultivoDB.getDatabase(applicationContext).cultivoDAO().getAllCultivos()

        taRv.layoutManager = LinearLayoutManager(this)
        taRv.adapter = CultivosAdapter(cultivos, this)
    }
}

I «Я искал, и я не решил свою проблему.

Редактировать

Это моя трассировка стека? Я начинающий в Android Studio.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.conexionbd, PID: 19984
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.conexionbd/com.example.conexionbd.CultivosActivity}: java.lang.RuntimeException: cannot find implementation for com.example.conexionbd.data.CultivoDB. CultivoDB_Impl does not exist
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3122)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1977)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6923)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870)
     Caused by: java.lang.RuntimeException: cannot find implementation for com.example.conexionbd.data.CultivoDB. CultivoDB_Impl does not exist
        at android.arch.persistence.room.Room.getGeneratedImplementation(Room.java:93)
        at android.arch.persistence.room.RoomDatabase$Builder.build(RoomDatabase.java:630)
        at com.example.conexionbd.data.CultivoDB$Companion$database$2.invoke(CultivoDB.kt:18)
        at com.example.conexionbd.data.CultivoDB$Companion$database$2.invoke(CultivoDB.kt:13)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.example.conexionbd.data.CultivoDB$Companion.getDatabase(Unknown Source:6)
        at com.example.conexionbd.data.CultivoDB$Companion.getDatabase(CultivoDB.kt:22)
        at com.example.conexionbd.CultivosActivity.onCreate(CultivosActivity.kt:16)
        at android.app.Activity.performCreate(Activity.java:7148)
        at android.app.Activity.performCreate(Activity.java:7139)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1293)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3261) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1977) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.app.ActivityThread.main(ActivityThread.java:6923) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:870) 

1 Ответ

0 голосов
/ 28 апреля 2020

Вы должны заменить эту строку

var cultivos: List<Cultivo> = CultivoDB.getDatabase(applicationContext).cultivoDAO().getAllCultivos() 

на следующую строку:

var cultivos: List<Cultivo> = CultivoDB.getDatabase(this@CultivosActivity).cultivoDAO().getAllCultivos()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...