У меня есть простое представление ресайклера, в котором у меня есть интерфейс внутри тела, и я объявил интерфейс в параметре конструктора, поэтому я могу получить к нему доступ в теле представления ресайклера. Но он показывает ошибку как
Conflicting declarations: public interface CardClickListener, private final val CardClickListener: MemoryBoardAdapter.CardClickListener
Я попытался изменить модификаторы видимости, но ошибка все еще сохраняется. ** Мой код:**
Просмотр Recycler с интерфейсом:
class MemoryBoardAdapter( private val CardClickListener: CardClickListener ) : RecyclerView.Adapter<MemoryBoardAdapter.ViewHolder>() {
interface CardClickListener{
fun onCardClicked(position: Int)
} }
Объект MainActivity, вызывающий recyclerView:
binding.rvBoard.adapter = MemoryBoardAdapter(object: MemoryBoardAdapter.CardClickListener{override fun onCardClicked(position: Int) {// TODO}
})
Я попытался перейти с частного val на внутренний var, но ошибка все еще сохраняется. если я удалю модификатор видимости в конструкторе класса, ошибка исчезнет, но я не могу получить доступ к интерфейсу внутри тела класса.
@Mark Да, это решено. Спасибо за ваше время. Извините за глупую ошибку.
Заглавная C для CardClickListener в object: MemoryBoardAdapter.CardClickListener
конфликтует с именем интерфейса CardClickListener
внутри вашего адаптера. Измените имя параметра или используйте картаClickListener
class MemoryBoardAdapter(private val cardClickListener: CardClickListener )
вместо
class MemoryBoardAdapter(private val CardClickListener: CardClickListener )
используйте camelCase для имени вашей переменной (или просто не то же имя, что и ваш статический вложенный интерфейс).