2011-09-14 8 views
6

Ho un'attività ListFragment.Come ignorare LongPress in ListFragment?

Voglio creare un metodo per onItemClickedLongPress, in modo che quando l'utente fa questo. un menu si apre. Ho familiarità con la creazione del menu.

Quindi, se qualcuno lo desidera, fornirmi ulteriori istruzioni su come impostare Ignora la longpress in un'attività ListFragment?

risposta

8

modifica: questo esempio mostra come mostrare qualcosa di diverso dal menu di sistema fx. QuickAction da 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: Questo ansewer non è buono ... perché ho fatto questo come metodo di strano? perché eclissi IntelliSense non propmt "buono" setOnLongClickListener per ListView (dal ListView ha almeno 2 setOnLongClickListener metodi ... uno da View e la seconda da AdapterView classe) ... il modo più semplice è lasciare che il vostro ListFragment implementare AdapterView.OnItemLongClickListener e poi in onViewCreated add codice getListView().setOnLongClickListener(this);

+0

menuInfo è nullo? cosa fare adesso ? – aProgrammer

5

Con "pressione prolungata", penso che tu stia facendo riferimento al menu di scelta rapida. Per un ListFragment, tutto si dovrebbe avere a che fare è quello di registrare per il menu contestuale:

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

Una volta fatto questo, il ListFragment dovrebbe chiamare onCreateContextMenu() e onContextItemSelected() quando rileva una pressione prolungata.

0

Modificato Erich Douglass' la risposta più .. per qualche ragione la mia app potrebbe andare in crash fino a quando ho modificato il mio codice e messo la registrazione in onViewCreated come segue:

@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. 
    } 
}); 
Problemi correlati