2011-07-07 1 views
7

Я хотел бы иметь оба типа кликов по спискуView - onClick и LongClick.ListView не запускает setOnLongClickListener, только setOnItemClickListener

Я реализовал это следующим образом:

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) { ... } }); 

Но does't огонь Длинное нажатие. У кого-нибудь есть идеи, почему?

ответ

24

Вы должны включить LongClickable

list.setLongClickable(true); 

и

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

} 
}); 
+0

Спасибо, человек! Решила мою проблему :) И BTW - вам не нужно делать setLongClickable корыто код, его лучше, когда вы определяете его через XML: android: longClickable = "true" – Ofershap

+1

Документация 'setOnItemLongClickListener' говорит, что" If этот вид не долго кликабель, он становится длинным кликабельным ». – Vadim

+8

И это не работает для меня ... :( – Vadim

0

onLongClick возвращает true, если обратный вызов потребляет длинный клик, в противном случае - false. Поэтому, если событие обрабатывается этим методом, верните true.

+0

Я добавил точку останова внутри этого метода, и он не останавливается на нем. Похоже, что он не запускает событие. – Ofershap

6

@Vadim, являются адаптер вашего ListView является простирается от BaseAdapter? если да, то также необходимо установить convertView.setLongClickable (true); в getView().

1

Для меня, я должен был установить android:longClickable="true" в файле XML, который содержит мой ListView строки макета (не ListView макета) для элемента, чтобы быть длинными интерактивным.

+0

Из многих предлагаемых решений, которые я видел для этой проблемы (и я пробовал их ВСЕ), это единственный, который работал для меня. –

 Смежные вопросы

  • Нет связанных вопросов^_^