Click em botão dentro do recicleview (item especifico)

6 respostas
javaprogramaçãoandroid
F

Galera boa noite (agora são 23hrs), eu to procurando no google faz um bom tempo, cerca de 1 mes já, já perguntei em grupos de facebook, whatsapp, porém sem respostas, então decidi vim até aqui para poder perguntar a vocês, é o seguinte, eu tenho um app e queria poder clicar nesse botãozinho de + (Mais) nele ai, porém n consigo ativar um evento de clique em item especifico dentro do recycleview, alguem poderia me dar uma luz?

6 Respostas

R

Bom, pra vc ter essa tela toda feita, eu acredito que vc tenha um Adapter do seu RecyclerView.

Então la nó seu adapter, no OnBindViewHolder vc vai declarar o seu botão e depois vai fazer o seguinte: (faça a adaptação ao seu código, tô te passando bem resumido)

private List<PessoaModel> mPessoa;

@Override 
public void onBindViewHolder(@NonNull final PessoaAdapter.LojaViewHolder holder, final int position) {
        final PessoaModel pessoa = mPessoa.get(position);

        holder.botao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println(pessoa.getId);
                //agora toda vez que vc clicar em um botão
                // em qualquer posição. O seu app vai retornar
                // o id daquela pessoa, exemplo:

                //vc clicou em ALJAVA DE EHLONNA...
                //o app vai retornar "800" (que é o id específico daquele item)
                //que provavelmente esteja no banco de dados.
        });
 }
F

Já tentei desse jeito mno, ele trava e não funciona… ta tenso fzer isso real msm

R

mostra seu codigo

F

Este é o Adapter do RecycleView

public class Adapter extends RecyclerView.Adapter<Adapter.myViewHolder> {

private List<listadeitensmagicos> listadeitensmagicos;


public Adapter(List<listadeitensmagicos> listamagica) {
    this.listadeitensmagicos = listamagica;
}

@NonNull
@Override
public myViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View itemlista = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.itensmagicos,parent,false);


    return new myViewHolder(itemlista);
}


@Override
public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {
    final listadeitensmagicos lm = listadeitensmagicos.get(position);
    holder.texto.setText(lm.getNome());
    holder.preco.setText("preço: " + lm.getPreco());
}

@Override
public int getItemCount() {
    return listadeitensmagicos.size();
}

public class myViewHolder extends RecyclerView.ViewHolder{

    TextView texto;
    TextView preco;
    ImageView mais;
    ImageView menos;

    public myViewHolder(@NonNull View itemView) {
        super(itemView);
        texto = itemView.findViewById(R.id.texto);
        preco = itemView.findViewById(R.id.preco);
        mais = itemView.findViewById(R.id.adicionar);
        menos = itemView.findViewById(R.id.remover);
    }

}

}

Aqui é o ClickListener do RecycleView (tentei usar mas sem sucesso)

public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {

private OnItemClickListener mListener;
GestureDetector mGestureDetector;

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
    View childView = rv.findChildViewUnder(e.getX(), e.getY());
    if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
        mListener.onItemClick(childView, rv.getChildAdapterPosition(childView));
        return true;
    }
    return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}

public interface OnItemClickListener extends AdapterView.OnItemClickListener {
    public void onItemClick(View view, int position);

    public void onLongItemClick(View view, int position);
}

public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
    mListener = listener;
    mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }

        @Override
        public void onLongPress(MotionEvent e) {
            View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
            if (child != null && mListener != null) {
                mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
            }
        }
    });

}

}

F

Só pra explicar a ideia, eu quero poder clicar ali e enviar a informação para um texview fora do recycleview

R

Tira esse RecyclerItemClickListener.

cadê o código do click aqui?

Criado 3 de agosto de 2020
Ultima resposta 5 de ago. de 2020
Respostas 6
Participantes 2