Попытка сделать два динамических c повторных просмотра. Первый загружает кучу данных, а второй - как выбор элементов. onToggle / onClick каждого элемента, который будет добавлен или удален из списка второго recylerView. Оба recyclerViews являются фрагментами, я загружаю их в мой основной класс. Загрузка данных в первый recyclerView довольно проста, но добавление и удаление их во второй recyclerView во время выполнения очень тяжело для меня. Итак, мое решение выглядит следующим образом:
Вот мой класс данных второго recyclerView:
data class Customer (var id:Int,var speise:String){}
, тогда у меня есть класс Object, в котором хранится второй список, и две функции для добавления / удалить элементы:
object Bestellung {
lateinit var Kunden: MutableList<Customer> //DATA CLASS LIST
fun addBestellung(i:Int, s:String) {
Kunden.add(Customer(i,s))
}
public fun remBestellung(i:Int, s:String)
{
Kunden.remove(Customer(i,s))
}
}
. Для recyclerView я использую библиотеку, которая упрощает выбор элементов в recyclerView. Внутри моего класса Fragment находится функция onViewCreated:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val adapter = CustomerAdapter(this)
adapter.items = Kunden //HERE IS THE ERROR
recyclerView.adapter = adapter
adapter.choiceMode = ChoiceMode.SINGLE
adapter.onClick = { view, position ->
val sample = adapter.items[position]
// Do whatever you want
Toast.makeText(context, "Item clicked!", Toast.LENGTH_SHORT).show()
}
}
и здесь я получаю сообщение об ошибке: свойство lateinit Kunden не было инициализировано
Вот как я добавить / удалить элементы:
class SampleItemView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : FrameLayout(context, attrs, defStyleAttr){
init {
LayoutInflater.from(context).inflate(R.layout.view_sample_item, this, true)
}
fun bind(speisen: Speisen, isToggled: Boolean) {
sampleItemIndexTV.text = String.format("%d", speisen.id)
sampleItemNameTV.text = speisen.name
sampleItemTickIcon.visibility = if (isToggled) View.VISIBLE else View.GONE
if(isToggled) {
Toast.makeText(context, "Adding !", Toast.LENGTH_SHORT).show()
addBestellung(speisen.id, speisen.name)
}
else {
Toast.makeText(context, "Removing !", Toast.LENGTH_SHORT).show()
remBestellung(speisen.id,speisen.name)
}
}
}