RecyclerView.Adapter- Ошибка: публичные функции раскрывают свой внутренний тип возврата в Котлине

Я реализую класс RecylcerView.Adapter в Котлине. Я получаю ошибку времени компиляции, см. Комментарии в следующем коде.

// Compile time Error: 'public' function exposes its 'internal' return type ViewHolder class DietListAdapter(context: Context, private val foodList: ArrayList<Food>) : RecyclerView.Adapter<DietListAdapter.ViewHolder>() { private val inflater: LayoutInflater private var onItemClick: Callback<Void, Int>? = null init { inflater = LayoutInflater.from(context) } // Compile time Error: 'public' function exposes its 'internal' return type ViewHolder override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DietListAdapter.ViewHolder { val holder = ViewHolder(inflater.inflate(R.layout.layout_food_list_item, parent, false)) return holder } // Compile time Error: 'public' function exposes its 'internal' parameter type ViewHolder override fun onBindViewHolder(holder: DietListAdapter.ViewHolder, position: Int) { holder.textViewFoodName.text = foodList[position].foodName holder.textViewFoodDesc.text = foodList[position].foodDesc holder.itemView.setOnClickListener { if (onItemClick != null) onItemClick!!.callback(foodList[position].foodId) } } ... ... internal inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var textViewFoodName: TextView var textViewFoodDesc: TextView init { textViewFoodName = itemView.findViewById(R.id.textViewFoodName) as TextView textViewFoodDesc = itemView.findViewById(R.id.textViewFoodDesc) as TextView } } ... ... } 

Я проверил его в документации Kotlin, нет решения.

Кто-нибудь еще столкнулся с этой проблемой?

Моя плохая, глупая ошибка. Я преобразовал Java-код в Kotlin в Android Studio, поэтому он преобразовал внутренний класс как внутренний внутренний класс.

Я просто удалял внутреннюю работу, отлично работает.

Я собирался удалить этот вопрос, и просто подумал о той же проблеме, с которой может столкнуться кто-то, поэтому просто отправил ответ.

Существует два аспекта этой проблемы:

  1. Если у вас есть внешний класс как открытый, тогда Kotlin не разрешает вам выставлять его частный или внутренний член как аргумент суперкласса, или как тип возврата, или даже как параметр. Внутренний класс должен иметь тот же модификатор, что и класс eclosing, т.е. public.

  2. Другим аспектом является наличие внешнего класса как частного или внутреннего, тогда в этом случае ваш внутренний класс может быть как частным, так и внутренним.