Странное поведение, массив пуст при попытке удалить элемент - PullRequest
0 голосов
/ 19 апреля 2020

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

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        fetchProducts(shopId)

        rv_myshop.layoutManager = LinearLayoutManager(requireContext())
        rv_myshop.addItemDecoration(
            DividerItemDecoration(
                requireContext(),
                LinearLayoutManager.VERTICAL
            )
        )
    }

 private fun fetchProducts(shopId:String){
        viewModel.fetchProducts(shopId).observe(viewLifecycleOwner, Observer { result ->
            when(result){
                is Resource.Loading -> { showProgress() }
                is Resource.Success -> {
                    hideProgress()
                    adapter.setItems(result.data)
                    rv_myshop.adapter = adapter
                    if(adapter.itemCount == 0){
                        container_no_products.visibility = View.VISIBLE
                    }
                }
                is Resource.Failure -> { hideProgress() }
            }
        })
    }

Пока все не работает нормально, этот код просто выводит мои данные и заполняет мой список! Хорошо, но теперь я пытаюсь удалить элемент, нажав кнопку «Удалить» в моем адаптере, и элементы не удаляются из массива, а массив показывает 0 элементов, когда в нем больше элементов ...

  override fun onDeleteProductClick(position: Int) {
        adapter.removeItem(position)
}

MyAdapter

  var productsList = mutableListOf<Product>()

    fun setItems(productsList:MutableList<Product>){
            this.productsList = productsList
            notifyDataSetChanged()
        }

        fun removeItem(position: Int){
            productsList.removeAt(position)
            notifyItemRemoved(position)
        }

Итак, здесь, когда я пытаюсь removeItem, он ничего не удаляет, потому что кажется, что список имеет размер 0, но я фактически установил этот список раньше с помощью setItems

Я потерян, я отладил программу, и этот список показывает размер 0, когда я уже получил значения

любой намек?

1 Ответ

0 голосов
/ 19 апреля 2020

Проблема заключалась в том, что в моем источнике данных я изменял этот элемент, поэтому мне просто нужно было уведомить DataSetChanged о результате моего удаления

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