Модификатор «override» не применим к «локальной функции» - PullRequest
0 голосов
/ 04 марта 2020

Я получаю следующую ошибку при использовании базы данных Firebase в реальном времени в android

 val catListener =  object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if (dataSnapshot.exists()) {
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) {
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                }

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick = { pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                }
            }

            override fun onCancelled(databaseError: DatabaseError) {
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            }
        }

Ошибки -

Модификатор 'override' не применим к 'local function '(относится к объекту: ValueListener

Объект не является абстрактным и не реализует абстрактный абстрактный элемент public fun onCancelled (@NonNull p0: DatabaseError): модуль, определенный в com.google.firebase.database.ValueEventListener

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Измените это:

 val catListener =  object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if (dataSnapshot.exists()) {
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) {
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                }

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick = { pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                }
            }

            override fun onCancelled(databaseError: DatabaseError) {
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            }
        }

на это:

 val catListener =  object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if (dataSnapshot.exists()) {
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) {
                    val name = eventSnapshot.child("name").getValue() as String
                    list.add(Category(name));
                }

                var adp = CategoryAdapter(list);
                cat_rv.adapter = adp

                adp.onItemClick = { pos, view ->

                    i.putExtra("category", list[pos].name)
                    startActivity(i)
                }
              }
           }

            override fun onCancelled(databaseError: DatabaseError) {
                // Getting Post failed, log a message
                Log.w("Category", "loadCat:onCancelled", databaseError.toException())

            }
        }

У вас отсутствуют скобки

0 голосов
/ 04 марта 2020

Вам не хватает всех видов синтаксиса - в основном закрывающих скобок. Это минимально то, что приводит вас к правильному синтаксису Kotlin.

    val catListener =  object : ValueEventListener {
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if (dataSnapshot.exists()) {
                // Get Post object and use the values to update the UI
                for (eventSnapshot in dataSnapshot.children) {
                }
            }
        }

        override fun onCancelled(databaseError: DatabaseError) {
            // Getting Post failed, log a message
            Log.w("Category", "loadCat:onCancelled", databaseError.toException())

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...