Ответы:
Вопрос 1: Рекомендация Кита Фана о переносе части logi c внутри onBindViewHolder
была весьма полезной.
Вопрос 2: Если вы уже прошли текущий В контексте с основным конструктором отдельного класса (который определен в другом файле), в Kotlin возможно достичь содержимого currentActivity сегментом кода: (context as Activity)
.
Таким образом, решение и общая структура моего адаптера были такими:
import ...
class MyAdapter (var ctx: Context, var list: ArrayList<SomeObject>)
: RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyAdapter.MyViewHolder {
return MyViewHolder(LayoutInflater.from(ctx).inflate(R.layout.singleListElement, parent,false))
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: MyAdapter.MyViewHolder, position: Int) {
//Do the work here, onClickListeners, if statements etc.
//...
list.remove(index)
if(list.size == 0) {
(ctx as Activity).findViewById<TextView>(R.id.listEmpty).visibility=View.VISIBLE
}
} //Close onBindViewHolder
inner class MyViewHolder (v: View) : RecyclerView.ViewHolder(v){
val someView: Textview
init { someView = v.findViewById(R.id.someViewId) }
}
}
Писать код в это окно нелегко. Когда я нажимаю кнопку Tab, браузер выходит из экрана редактирования и выбирает другую часть этой веб-страницы. Так что код выглядит так. Возможно, лучше скопировать / вставить.
Улучшения и более эффективные решения для пустого списка приветствуются. Спасибо.