4
respostas

RecycleView Reciclando Estilos das 3 primeiras posições

Tenho um código aqui onde minha reclyclerView quando scrollo para cima ou para baixo, recicla também o estilo do botão Switch, seja True ou False.

Alguém consegue me ajudar?

4 respostas

Deybimar, de boa ?

Consegue mostrar um video/gif disso rodando ? Confesso que não entendi o que tá rolando e também o que vc quer que aconteça

De boa e ai?

Segue link do Video https://drive.google.com/file/d/1DuOmJLzY4H7eU38LFJVhMWmnySYwArCG/view?usp=share_link

Quero que quando o Item for reciclado, que não copie os estilos do Switch = True ou Vice e Versa.

Desde já agradeço sua ajuda e disponibilidade!

Fala Deybimar, de boa?

Saquei o que rola...

Acho que tu vai precisar no onBind setar o valor do switch pro valor original de novo.

Consegue mostrar pra gente como está o adapter pra gente te auxiliar?

De boa e você?

Cara eu consegui resolver fazendo assim

public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            ListaAprISViewHolder vh = holder as ListaAprISViewHolder;
            vh.TxtAprItensSeguranca.Text = ListaIS[position].DSC_ITEM_SEGURANCA.ToString();

            vh.SwhItemSegurancaApr.Checked = ListaIS[position].IsChecked;

            if (AprViewModel.m_switchItemSegurancaList.Count > 0 && ItensSegurancaFragment.itemSegurancaOSList.Count > 0)
            {
                if (AprViewModel.m_switchItemSegurancaList.Where(x => x.COD_APR == ListaIS[position].COD_APR && x.COD_ITEM_SEGURANCA == ListaIS[position].COD_ITEM_SEGURANCA).Count() > 0)
                {
                    vh.SwhItemSegurancaApr.Checked = true;
                }
                else
                {
                    vh.SwhItemSegurancaApr.Checked = false;
                }

            }
 public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            View itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.fragment_apr_item_itens_seguranca, parent, false);
            ListaAprISViewHolder vh = new ListaAprISViewHolder(itemView, OnClick);           

            //RecycleView do Botão Switch
            Switch switchView = itemView.FindViewById<Switch>(Resource.Id.swhItemSegurancaApr);

            switchView.CheckedChange += (s, e) => { int adapterPosition = vh.AdapterPosition; 
                if (adapterPosition != RecyclerView.NoPosition) 
                { ListaIS[adapterPosition].IsChecked = e.IsChecked; } };

        return vh;
        }

Mas se tiver como deixar o código mais Clean aceito a ajuda.

Obrigado pelo apoio!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software