簡體   English   中英

無法在 RecyclerView 項目單擊時顯示彈出菜單

[英]Unable to show popmenu on RecyclerView item click

當用戶單擊該行元素時,我在 Recyclerview 項目行中有菜單選項,然后我想顯示彈出菜單。 我已經實現了這個功能,點擊消息顯示在日志上,但彈出菜單沒有出現。

下面是我的代碼:

public class PdfAdapter extends RecyclerView.Adapter<PdfAdapter.ViewHolder> {

Context context;
List<Pdfs> pdfList;

public PdfAdapter(Context context, List<Pdfs> pdfList) {
    this.context = context;
    this.pdfList = pdfList;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.pdf_item_row,parent,false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

    Pdfs model = pdfList.get(position);

    holder.pdfName.setText(model.getFilenamename());
    holder.datTime.setText(model.getDatetime());

    holder.menu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Log.d("clik","Hello");

            PopupMenu popupMenu = new PopupMenu(context,holder.menu);
            popupMenu.inflate(R.menu.row_menu);

            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {

                    switch (item.getItemId()) {
                        case R.id.itemShare:

                            break;
                        case R.id.itemDel:

                            break;
                        case R.id.itemDownload:
                            Toast.makeText(context,model.getFileurl(),Toast.LENGTH_SHORT).show();
                            break;
                    }

                    return false;
                }
            });
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder {

    TextView pdfName,menu,datTime;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        pdfName = itemView.findViewById(R.id.pdfName);
        menu = itemView.findViewById(R.id.menu);
        datTime = itemView.findViewById(R.id.datTime);
      }
   }
}

我究竟做錯了什么?

您忘記在popupMenu上調用.show()方法。

最后在點擊偵聽器中添加以下行。

popupMenu.show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM