Сохранить изменение элемента RecyclerView - PullRequest
0 голосов
/ 12 апреля 2020

Как мне go сохранить сохраненные значения элемента RecyclerView.

У меня есть ImageButton в моем ViewHolder, который используется для увеличения свойства, называемого number, которое в моем объекте элемента списка.

Инкремент работает так же правильно, но как только я ввожу другой фрагмент и возвращаю go, значение в моем элементе списка RecyclerView сбрасывается.

Как сохранить изменения в свойстве number, чтобы запретить остатки значений?

data class Object(var title : String = "", var number : Int = 0)

private inner class ObjectHolder(view : View) : RecyclerView.ViewHolder(view), View.OnClickListener{

        private lateinit var object: Object

        private val numberText: TextView = itemView.findViewById(R.id.text_number)
        private val upButton: ImageButton = itemView.findViewById(R.id.up_button)

        init {
            upButton.setOnClickListener(this)
        }



        fun bind(object : Object){
            this.object= object
            numberText.text = this.object.number   
        }

        override fun onClick(v: View?) {
            if(upButton.isPressed){
                object.number= object.number + 1
                numberText.text = subject.number.toString()
            }
        }

    }

    private inner class ObjectAdapter(var subjects : List<Object>) : RecyclerView.Adapter<ObjectHolder>(){


        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ObjectHolder{
            val view = layoutInflater.inflate(R.layout.list_item_object, parent, false)
            return ObjectHolder(view)
        }

        override fun getItemCount(): Int {
            return objects.size
        }


        override fun onBindViewHolder(holder: ObjectHolder, position: Int) {
            val object = objects[position]


            holder.bind(object)
        }

    }

1 Ответ

1 голос
/ 12 апреля 2020

Полагаю, вы установили var subjects : List<Object> в своем фрагменте, поэтому каждый раз, когда он воссоздает, он устанавливает одни и те же данные. Я бы сохранял список в viewModel (с контекстом активности), и каждый раз, когда нажимали кнопку, данные в ViewModel обновлялись.

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