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?
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.
});
}
Já tentei desse jeito mno, ele trava e não funciona… ta tenso fzer isso real msm
mostra seu codigo
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));
}
}
});
}
}
Só pra explicar a ideia, eu quero poder clicar ali e enviar a informação para um texview fora do recycleview
Tira esse RecyclerItemClickListener.
cadê o código do click aqui?