TransWikia.com

Excluir item do recyclerView a partir do Adapter

Stack Overflow em Português Asked by Cristiano on March 1, 2021

Estou tentando aplicar uma funcionalidade, clicando em um ícone dentro de uma lista de um RecyclerView.
Ao clicar no ícone, eu registro a aceitação da condição, caso não aceite, o “item todo” deve ser excluído da lista. Estou tentando fazer isto de dentro do Adapter, acredito que seja no onBindViewHolder, porque eu quero o clique apenas no ícone do item, e não no item todo, até porque terei outros ícones com outras funções.
Não estou conseguindo excluir o item da lista:

Adapter XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="fill_vertical"
    android:orientation="vertical"
    android:paddingLeft="@dimen/dim_mid"
    android:paddingRight="@dimen/dim_mid"
    android:paddingTop="@dimen/dim_normal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/dim_normal"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/civUsuario"
            style="@style/ImgPerfil"
            android:layout_width="50dp"
            android:layout_height="50dp" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:orientation="vertical"
            android:padding="5dp">

            <TextView
                android:id="@+id/textNome"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Nome"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/textStatus"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Status" />
        </LinearLayout>

        <ImageView
            android:id="@+id/icone03"
            style="@style/IconesStatus" />

        <ImageView
            android:id="@+id/icone02"
            style="@style/IconesStatus" />

        <ImageView
            android:id="@+id/icone01"
            style="@style/IconesStatus" />

    </LinearLayout>

</LinearLayout>

Adapter Java:

List<Usuario> usuarios;

@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
    holder.icone01.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // Executo a verificação
            if (false) {
                // Condição aceita
            } else {
                usuarios.remove(position);
                notifyItemRemoved(position);
            }

        }
    });
}

Este código não funciona… o item não é excluído…
Alguém sabe me informar qual seria a forma correta de se fazer isto? Preciso executar de dentro do Adapter para atribuir o onClick apenas ao ícone específico, ou acessar o ícone, atribuindo um onClick a ele de fora do Adapter, pelo recyclerView talvez… Não sei como fazer.

One Answer

Seu ImageView com id "icone01" precisa da propriedade android:clickable="true".

Answered by Danilo de Oliveira on March 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP