ListView doesnt fire setOnLongClickListener, only setOnItemClickListener

13,108

Solution 1

You have to enable the LongClickable

list.setLongClickable(true);

and

list.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                final int arg2, long arg3) {

}
});

Solution 2

@Vadim, are your listview's adapter is extends from BaseAdapter? if yes, then also need to set convertView.setLongClickable(true); in the getView().

Solution 3

For me, I had to set android:longClickable="true" in the XML file that contains my ListView row layout (not ListView layout) for the item to be long-clickable.

Share:
13,108
Ofershap
Author by

Ofershap

CTO &amp; Fullstack web developer

Updated on June 22, 2022

Comments

  • Ofershap
    Ofershap almost 2 years

    I'd like to have both type of clicks on a listView - onClick and LongClick.

    I've implemented it like this:

    this.listViewSub = (ListView) this.findViewById(R.id.listsub);
    
    this.listViewSub.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView parent, final View view, final int position,
                    final long id) { ... }    });
    
            // listen to long click - to share texts
        this.listViewSub.setOnLongClickListener(new OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) { ... } });
    

    But it does't fire the Long Click. Anyone has any idea why?

  • Ofershap
    Ofershap almost 13 years
    I've added a breakpoint inside this method, and it doesn't stops there.. it looks like it doesnt fire the event.
  • Ofershap
    Ofershap almost 13 years
    Thanks man! Solved my problem :) And BTW - you don't have to do setLongClickable trough code, its nicer when you determn it through the XML: android:longClickable="true"
  • Vadim
    Vadim over 12 years
    The documentation of setOnItemLongClickListener says that "If this view is not long clickable, it becomes long clickable."
  • tmin
    tmin over 10 years
    Make sure to use setOnItemLongClickListener, NOT setOnLongClickListener
  • Steve B
    Steve B about 9 years
    Of the many proposed solutions I've seen for this issue (and I've tried them ALL), this is the only one that has worked for me.