gpt4 book ai didi

java - 回收器适配器中菜单的 setOnMenuItemClickListener

转载 作者:行者123 更新时间:2023-11-29 23:23:34 24 4
gpt4 key购买 nike

感谢您考虑到我的出版物,我可以在回收站的 View 中实现一个带有元素的菜单,但是我的问题是访问菜单项的点击事件,我已经看到他们从 Activity 中做到了,但我有搜索信息以在回收器适配器中执行此操作,但我找不到任何东西。我必须补充一点,我已经实现了它,但即使这样我得到一个错误,我希望你能告诉我我做错了什么或实现它的正确方法。

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);

}
}

加载回收站时出现此错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.PopupMenu.setOnMenuItemClickListener(android.widget.PopupMenu$OnMenuItemClickListener)' on a null object reference

最佳答案

我找到了我的解决方案,碰巧我在构造函数中声明了 setOnMenuItemClickListener 方法,这是在加载菜单时实例化它时要做的正确事情。在这里我留下解决方案。

@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.setOnMenuItemClickListener(this);
popupMenu.show();
break;
case R.id.content_order:
mListener.OnItemClick(view, pedidoModelo, getAdapterPosition(), true);
break;
}
}

como se ve el metodo ya esta declarado Correctamente。 me ayudo el post que me pasaron sobre como fixear los 空指针

What is a NullPointerException, and how do I fix it?

关于java - 回收器适配器中菜单的 setOnMenuItemClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com