2016-09-20 1 views
4

Wie kann ich ein Kontextmenü im RecyclerViewAdapter haben, wenn die Ansicht auf LongClickListener gesetzt ist?Wie wird ein ContextMenu erstellt, wenn das RecyclerView-Objekt onLongClickListener eingestellt wird

Hier ist mein Code:

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

      public TextView name; 

      public ViewHolder(View itemLayoutView) { 

       super(itemLayoutView); 
       name = (TextView) itemLayoutView.findViewById(R.id.rvname); 

       itemLayoutView.setOnClickListener(this); 
       itemLayoutView.setOnLongClickListener(new View.OnLongClickListener() { 
        @Override 
        public boolean onLongClick(View v) { 
         return false; 
        } 

       }); 
      } 

Hier ist das Beispiel Bild, das ich

enter image description here

Antwort

3
gefunden werden kann

Basierend auf meiner Erfahrung muss ichnicht haben, um das Kontextmenü anzuzeigen, wird View.OnCreateContextMenuListener das für mich tun.

Hier ist mein Arbeitscode:

public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener { 

    public TextView name; 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 
     name = (TextView) itemLayoutView.findViewById(R.id.rvname); 
     itemLayoutView.setOnClickListener(this); 
     itemLayoutView.setOnCreateContextMenuListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     String location = name.getText().toString(); 
     Intent goFlip = new Intent(RecyclerAdapter.context, FlipActivity.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("name", location); 
     bundle.putInt("pos", getAdapterPosition()); 
     goFlip.putExtras(bundle); 
     context.startActivity(goFlip); 
    } 

    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
     menu.setHeaderTitle("Select Action"); 
     MenuItem edit = menu.add(Menu.NONE,1,1,"Edit"); 
     MenuItem delete = menu.add(Menu.NONE,2,2,"Delete"); 


     edit.setOnMenuItemClickListener(onChange); 
     delete.setOnMenuItemClickListener(onChange); 
    } 
    private final MenuItem.OnMenuItemClickListener onChange = new MenuItem.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      switch (item.getItemId()){ 
       case 1: 
        Toast.makeText(context,"Edit",Toast.LENGTH_LONG).show(); 
        return true; 
       case 2: 
        Toast.makeText(context,"Delete",Toast.LENGTH_LONG).show(); 
        return true; 
      } 
      return false; 
     } 
    }; 
} 

Ich mag auch den Link teilen, dass ich diese Arbeit machen gefunden: https://gist.github.com/gauravat16/e8e03496a4056829e65dede3c236da28

+0

Genau das, was ich suchte. Ich danke dir sehr. –

1

Sie müssen erreichen wollen implementieren PopupMenu Eine Implementierung here

Verwandte Themen