Ich habe einen Adapter, der ein recyclerView
paßt und ich möchte auf langen Click-Ereignisse auf recyclerView
‚s Elementen ein Popup-Menü öffnen. Wie kann ich das tun?Griff zum Produkt klicken lange auf Recycler Ansicht
Antwort
Zuerst müssen Sie Ihre Aktivität registrieren longClick Ereignisse aus dem recyclerView
(so dass Sie nicht verwenden, um jede Art von onLongClickListener
...) zu hören:
registerForContextMenu(recyclerView);
Dann erstellen Sie eine Menüressource (context_menu.xml):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Mostra documento" android:id="@+id/context_menu_documents_fragment_view"></item>
<item android:title="Aggiungi ad un contenitore" android:id="@+id/context_menu_documents_fragment_add_to_box"></item>
<item android:title="Elimina documento" android:id="@+id/context_menu_documents_fragment_delete"></item>
</menu>
In der Aktivität in dem Sie Kontextmenü registriert für Sie diese Methoden überschreiben:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
// Inflate Menu from xml resource
MenuInflater menuInflater = getActivity().getMenuInflater();
menuInflater.inflate(R.menu.context_menu_documents_fragment, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Toast.makeText(getActivity(), " User selected something ", Toast.LENGTH_LONG).show();
return false;
}
Das ist sehr wichtig, haben Sie den Code in Ihre RecyclerView
Adapter wie folgt zu ändern:
@Override
public void onBindViewHolder(final DocumentViewHolder viewHolder, int position) {
...
viewHolder.itemView.setLongClickable(true);
...
}
Jetzt können Sie sind! Aber Sie sind nicht in der Lage zu wissen, welche Artikel der Benutzer geklickt hat, dies zu tun, Sie eine benutzerdefinierte RecyclerView wie diese verwenden (Original-Code von Renaud Cerrato):
public class ContextMenuRecyclerView extends RecyclerView {
private RecyclerContextMenuInfo mContextMenuInfo;
public ContextMenuRecyclerView(Context context) {
super(context);
}
public ContextMenuRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ContextMenuRecyclerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected ContextMenu.ContextMenuInfo getContextMenuInfo() {
return mContextMenuInfo;
}
@Override
public boolean showContextMenuForChild(View originalView) {
final int longPressPosition = getChildAdapterPosition(originalView);
if (longPressPosition >= 0) {
final long longPressId = getAdapter().getItemId(longPressPosition);
mContextMenuInfo = new RecyclerContextMenuInfo(longPressPosition, longPressId);
return super.showContextMenuForChild(originalView);
}
return false;
}
public static class RecyclerContextMenuInfo implements ContextMenu.ContextMenuInfo {
public RecyclerContextMenuInfo(int position, long id) {
this.position = position;
this.id = id;
}
final public int position;
final public long id;
}
}
Im vorherigen onContextItemSelected()
Methode Sie wissen können, die recyclerView
Artikel-ID und die Position mit diesem Code:
ContextMenuRecyclerView.RecyclerContextMenuInfo info = (ContextMenuRecyclerView.RecyclerContextMenuInfo) item.getMenuInfo();
Schließlich müssen Sie das GetItemID() -Methode in Ihrem recyclerView Adapter und die Layout-Datei, um sicherzustellen, ändern, dass Sie Ihre recyclerView und nicht die android eines verwenden!
Dies wurde bereits beantwortet here. Wie auch immer, man kann es wie folgt tun:
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
private Article article;
private TextView nameTextView;
public ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
nameTextView = (TextView) itemView.findViewById(R.id.grid_item_article_name_textView);
}
public void bind(Article article) {
this.article = article;
nameTextView.setText(article.getName());
}
@Override
public void onClick(View view) {
// Context context = view.getContext();
// article.getName()
}
@Override
public boolean onLongClick(View view) {
// Handle long click
// Return true to indicate the click was handled
return true;
}
}
ich schwer zu kämpfen hatte, die Position von Punkt auf Klick zu holen, das ist für mich gearbeitet:
public void onClick(View view) {
ViewHolder holder =(ViewHolder)view.getTag();
int position = holder.getLayoutPosition();
Log.d("testing ","pos" +position);
}
int position = getAdapterPosition() wird Rückkehrposition von angeklickt i tem. –
ich auf diese Weise tat:
static class ViewHolder extends RecyclerView.ViewHolder {
TextView tvName;
ViewHolder(View v) {
super(v);
tvName = (TextView) v.findViewById(R.id.textView_Username);
//Single Tapup
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Position is " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
}
});
//Long Press
v.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(v.getContext(), "Position is " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
return false;
}
});
}
}
- 1. Recycler Ansicht Innen Recycler Ansicht nicht Scrollen
- 2. Dialog Öffnen auf Recycler-Ansicht Row-Button klicken
- 3. QListWidget: Event zum Produkt klicken
- 4. Recycler-Ansicht in einer Recycler-Ansicht
- 5. Recycler Ansicht in Fragment
- 6. Recycler Ansicht Scrollen vermasselt
- 7. Zeilenlayout nicht auf Hauptaktivität Recycler Ansicht eingestellt
- 8. Anzeige Recycler Ansicht ohne Navigationslayout
- 9. Recycler Ansicht - eine Ansicht öffnet eine andere
- 10. Wie programmgesteuert zum Ende einer Recycler-Ansicht scrollen?
- 11. wie alle untergeordneten Ansichten auf erweiterbare Recycler-Ansicht zu reduzieren
- 12. Android - Recycler Ansicht mit GCM
- 13. Android Recycler Ansicht scrollt nicht
- 14. Recycler-Ansicht wird nicht angezeigt
- 15. Bilder wiederholen in Recycler-Ansicht
- 16. Endless Recycler Ansicht innerhalb KoordinatorLayout
- 17. Odoo PoS Funktion auf Produkt klicken
- 18. So ändern Sie ein bestimmtes Bild in der Recycler-Ansicht nach dem Klicken auf
- 19. Griff kollabiert HTML-Tabelle durch Klicken auf die Schaltfläche und nicht durch Klicken auf Zeile
- 20. MenuInfo ist null, wenn Kontextmenü auf Recycler Ansicht erstellen
- 21. Recycler Ansicht benutzerdefinierte Layout-Manager Animation
- 22. Verwendung Recycler Ansicht in Horizenatl Scrolling
- 23. Android Java java.lang.NullPointerException: parsen Server Recycler Ansicht
- 24. Recycler Ansicht + View Pager + Verschachtelt ScrollView + CoordinatorLayout
- 25. senden Sie verschiedene ID auf klicken Sie auf jedes Produkt
- 26. Produkt ändern Variante auf Bild klicken auf Shopify Einzelne Produktseite
- 27. Recycler-Ansicht versteckt die Daten darunter
- 28. Zum nächsten Aktivität auf Button klicken klicken
- 29. Handle Click Button in der Recycler-Ansicht
- 30. Recycler Ansicht scrollen in beide Richtungen
möglich Duplikat von [Wie erstellt man Kontextmenü für RecyclerView] (http://stackoverflow.com/questions/26466877/how-to-create-context-menu-for-recyclerview) –