2015-01-29 2 views
0

Я хочу использовать эффект пульсации для этого, я установил android:clickable="true", но когда я это сделаю onClick событие не работает, но onLongClick работает. Как я могу это решить?Android clickable не работает в listview

Если я не установлен android:clickable, он работает.

Моя раскладка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:paddingBottom="4dp" 
       android:paddingTop="4dp" 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:clickable="true" 
       android:longClickable="true" 
       android:background="@drawable/ripple"> 

Код:

listView.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       Log.w("Item Clicked","Ok"); 
      } 
     }); 
     listView.setOnItemLongClickListener(new OnItemLongClickListener() { 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int pos, long id) { 
       Log.w("Item Long Clicked","Ok"); 
       } 
     }); 
+0

Есть ли какие-либо ошибки на LogCat? –

+0

Нет ошибки – Okan

+0

где анонс @Override? Скопировать/вставить ошибку или вы не знаете эту аннотацию? – Opiatefuchs

ответ

1

Вместо использования setOnItemClickListener на ListView попробуйте использовать setOnClickListener к каждому из ваших взглядов, возвращенных из адаптера. Вам нужно будет настроить setItemsCanFocus в свой список.

ListView OnItemClickListener Not Responding?

Вашего OnItemClickListener отключен для ListView строк, потому что у вас есть интерактивное LinearLayout в макете строки, которая берет на себя внимание.

Вы также можете посмотреть здесь: OnItemClickListener and OnClickListener not working for ListView

0

Это интересная проблема, потому что где-то щелчок не регистрирует событие. У меня есть ощущение, что это связано с this другим ответом, связанным с вашей проблемой.

Когда вы устанавливаете OnItemClickListener, событие onItemClicked вызывается только в том случае, если дочерний элемент ListView не имеет набора OnClickListener.

Если честно не хватает контекста с тем, что вы делаете, чтобы сказать вам много, за исключением установить onClickListener с на LinearLayout вместо ListView. Альтернативно, установите эффект пульсации на строки ListView (но я не знаю, где это устанавливается).

Редактировать: Чтобы ответить на ваш вопрос, он действительно работает. Просто не работает в ListView из-за фокуса.

+0

Я так запутался сейчас. Моя проблема такая же, что вы задали вопрос, но я не понял, что мне делать – Okan

+0

Хм, ну в принципе, если у ребенка. Представления ListView имеют clickable set to true, его не будем называть ваш 'onItemClickListener' или' onItemLongClickListener'.Если он не установлен, он работает. Итак, мы знаем, что это правда. Но почему. Хороший вопрос. Я посмотрю на источник очень быстро. У меня пока нет ответа. Но способ обойти это пока - это перемещаться по тому, как у вас установлен набор кликов. – Andy

+0

ok, пожалуйста, сообщите мне, если вы нашли что-нибудь – Okan

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