title: How to Delete a row in a RecyclerView Programmatically
body: <p>Hey guys I have a recyclerview adapter that populates list of some data on a cardview. I created a three dot menu towards the lower right bottom of the card layout which would actually delete the card row from the recyclerview and also make delete of the item from the sqlite database that stores rows data. The issue is I couldn't figure out how to integrate the method that would implement the delete into the recyclerview ViewHolder. Here is the source code</p>
  
  <pre><code>public class BeneficiaryRecyclerAdapter extends RecyclerView.Adapter&lt;BeneficiaryRecyclerAdapter.BeneficiaryViewHolder&gt; {
  
  private List&lt;Beneficiary&gt; listBeneficiary;
  public ImageView overflow;
  private Context mContext;
  
  public BeneficiaryRecyclerAdapter(){
  
  }
  
  
  public BeneficiaryRecyclerAdapter(List&lt;Beneficiary&gt; listBeneficiary, Context mContext) {
      this.listBeneficiary = listBeneficiary;
      this.mContext = mContext;
  
  }
  
  
  @Override
  public BeneficiaryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      // inflating recycler item view
      View itemView = LayoutInflater.from(parent.getContext())
              .inflate(R.layout.item_beneficiary_recycler, parent, false);
  
      return new BeneficiaryViewHolder(itemView);
  }
  
  @Override
  public void onBindViewHolder(final BeneficiaryViewHolder holder, int position) {
      holder.textViewName.setText(listBeneficiary.get(position).getName());
      holder.textViewEmail.setText(listBeneficiary.get(position).getEmail());
      holder.textViewAddress.setText(listBeneficiary.get(position).getAddress());
      holder.textViewCountry.setText(listBeneficiary.get(position).getAddress());
  
      holder.overflow.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              showPopupMenu(holder.overflow);
          }
      });
  }
  
  /**
   * Showing popup menu when tapping on 3 dots
   */
  private void showPopupMenu(View view) {
      // inflate menu
      PopupMenu popup = new PopupMenu(this.mContext, view);
      MenuInflater inflater = popup.getMenuInflater();
      inflater.inflate(R.menu.beneficiary_m, popup.getMenu());
      popup.setOnMenuItemClickListener(new MyMenuItemClickListener());
      popup.show();
  }
  
  
  //NOTE: The method that would delete the item from the database and recyclerview but i need this method to be called from the onMenuItemClick of the case with id of case R.id.action_delete_beneficiary
  
  public void deleteItem(final BeneficiaryViewHolder holder, int position) {
      final DatabaseHelper2 db = new DatabaseHelper2(mContext);
      db.open();
      db.deleteContact(position);
      db.close();
      listBeneficiary.remove(position);
      notifyItemRemoved(position);
      notifyItemRangeChanged(position, listBeneficiary.size());
      holder.itemView.setVisibility(View.GONE);
  }
  
  
  
  /**
   * Click listener for popup menu items
   */
  class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
  
  
      public MyMenuItemClickListener() {
      }
  
      @Override
      public boolean onMenuItemClick(MenuItem menuItem) {
  
          switch (menuItem.getItemId()) {
              case R.id.action_delete_beneficiary:
                  Toast.makeText(mContext, "deleting beneficiary", Toast.LENGTH_SHORT).show();
                  return true;
              case R.id.action_edit_beneficiary:
                  Toast.makeText(mContext, "editing beneficiary", Toast.LENGTH_SHORT).show();
                  return true;
              default:
          }
          return false;
      }
  
  
  }
  
  
  @Override
  public int getItemCount() {
      Log.v(BeneficiaryRecyclerAdapter.class.getSimpleName(),""+listBeneficiary.size());
      return listBeneficiary.size();
  }
  
  
  /**
   * ViewHolder class
   */
  public class BeneficiaryViewHolder extends RecyclerView.ViewHolder {
  
      public AppCompatTextView textViewName;
      public AppCompatTextView textViewEmail;
      public AppCompatTextView textViewAddress;
      public AppCompatTextView textViewCountry;
      public  ImageView overflow;
  
      public BeneficiaryViewHolder(View view) {
          super(view);
          textViewName = (AppCompatTextView) view.findViewById(R.id.textViewName);
          textViewEmail = (AppCompatTextView) view.findViewById(R.id.textViewEmail);
          textViewAddress = (AppCompatTextView) view.findViewById(R.id.textViewAddress);
          textViewCountry = (AppCompatTextView) view.findViewById(R.id.textViewCountry);
          overflow = (ImageView) view.findViewById(R.id.overflow);
      }
  }
  
  
  }
  </code></pre>
  
  <p>I would be glad if anybody can help me with this.</p>