Thanks for taking into account my publication, I could implement a menu with elements in the view of a recycler, but with my problem is to access the click event of the menu items, I have seen that they do it from activities, but I have searched for information to do it in recycler adapters and I can not find anything. I must add that I have it implemented but even so I get an error I hope you can tell me what I do wrong or the correct way to implement it.
public class ViewHolderPedido extends RecyclerView.ViewHolder implements View.OnClickListener, PopupMenu.OnMenuItemClickListener {
@BindView(R.id.txtNumeroPedido)
TextView txtNumeroPedido;
@BindView(R.id.txtFechaPedido)
TextView txtFechaPedido;
@BindView(R.id.txtSubTotalPedido)
TextView txtSubTotal;
@BindView(R.id.txtEstadpoPedidoList)
TextView txtEstadoPedido;
@BindView(R.id.txtNombreProductoPedidoList)
TextView txtNombreProduct;
@BindView(R.id.imgProductoPedidoList)
ImageView imgProducto;
@BindView(R.id.menu)
ImageView mImgMenu;
@BindView(R.id.content_order)
LinearLayout mContentOrder;
PopupMenu popupMenu;
PedidoModelo pedidoModelo;
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.menu:
popupMenu = new PopupMenu(mContext, view);
popupMenu.getMenuInflater().inflate(R.menu.menu_cancel, popupMenu.getMenu());
popupMenu.show();
break;
case R.id.content_order:
mListener.OnItemClick(view, pedidoModelo, getAdapterPosition(), true);
break;
}
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
return false;
}
public ViewHolderPedido(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
mImgMenu.setOnClickListener(this);
mContentOrder.setOnClickListener(this);
popupMenu.setOnMenuItemClickListener(this);
}
protected void bind(PedidoModelo model) {
this.pedidoModelo = model;
txtFechaPedido.setText(pedidoModelo.getFecha());
txtSubTotal.setText(PrecioFormater.formatoPrecio(pedidoModelo.getPrecioTotal()));
txtNumeroPedido.setText(pedidoModelo.getNumeroOrden());
txtEstadoPedido.setText(pedidoModelo.getEstado());
txtNombreProduct.setText(pedidoModelo.getNombreProducto());
Picasso.with(mContext).load(pedidoModelo.getUrlImagen()).into(imgProducto);
switch (pedidoModelo.getCodigo_estado()) {
case OrderStatus.PENDING:
mImgMenu.setVisibility(View.VISIBLE);
break;
case OrderStatus.COMPLETE:
mImgMenu.setVisibility(View.VISIBLE);
break;
}
}
}
public interface OnItemClickListener {
boolean OnItemClick(View view, PedidoModelo item, int position, boolean longPress);
}
}
This error I get when loading my recycler
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.PopupMenu.setOnMenuItemClickListener(android.widget.PopupMenu$OnMenuItemClickListener)' on a null object reference