2011-09-14 3 views
6

J'ai une activité ListFragment.Comment remplacer LongPress dans ListFragment?

Je veux créer une méthode pour onItemClickedLongPress, de sorte que lorsque l'utilisateur le fait. un menu apparaît. Je suis familier avec la création du menu.

Donc, si quelqu'un le souhaite, donnez-moi d'autres instructions sur la façon de définir Override le longpress dans une activité ListFragment?

Répondre

8

edit: cet exemple montre comment montrer autre chose que le menu système fx. QuickAction de https://github.com/lorensiuswlt/NewQuickAction

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    //....... 
    registerForContextMenu(getListView()); 
} 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    AdapterView.AdapterContextMenuInfo amenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo; 
    Object item = getListAdapter().getItem(amenuInfo.position); 
    //item could be Cursor/String/YourObject it depends on Adapter 
    //show popup fx. QuickAction from https://github.com/lorensiuswlt/NewQuickAction 
    QuickAction qa = new QuickAction(getActivity()); 
    qa.setAnimStyle(QuickAction.ANIM_AUTO); 
    qa.show(amenuInfo.targetView); 
} 

EDIT: Ce ansewer est pas bon ... pourquoi je l'ai fait cette étrange méthode? parce que l'éclipse IntelliSense ne propmt « bon » setOnLongClickListener pour ListView (depuis ListView a au moins 2 méthodes setOnLongClickListener ... un de View et deuxième de AdapterView classe) ... le plus simple est de laisser votre ListFragment mettre en œuvre AdapterView.OnItemLongClickListener puis dans onViewCreated add Code getListView().setOnLongClickListener(this);

+0

menuInfo est null? Que faire maintenant ? – aProgrammer

5

Par "appui long", je pense que vous faites référence au menu contextuel. Pour un ListFragment, tout ce que vous devriez avoir à faire est de vous inscrire au menu contextuel:

@Override 
public void onActivityCreated(Bundle icicle) {  
    registerForContextMenu(getListView()); 
} 

Une fois que vous faites cela, le ListFragment devrait appeler onCreateContextMenu() et onContextItemSelected() lorsqu'il détecte une pression longue.

0

modifié la réponse de Erich Douglass plus .. pour une raison quelconque mon application plantait jusqu'à ce que je modifié mon code et placé l'enregistrement en onViewCreated comme suit:

@Override 
public void onViewCreated (View view, Bundle savedInstanceState) { 
    registerForContextMenu(getListView()); 
} 
0
getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     // Show your popout menu here. 
    } 
}); 
Questions connexes