Dynami c recycler Просмотр списка как объекта - PullRequest
0 голосов
/ 14 апреля 2020

Попытка сделать два динамических 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)
    }
}

}

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