2013-12-21 3 views
0

У меня есть ListView с setOnItemClickListener и setOnItemLongClickListener. С 1 года без проблем. Но с Android 4.4 я получу с LongClick оба метода.Android 4.4 setOnItemLongClickListener ошибка?

Например:

lv.setOnItemClickListener(new OnItemClickListener() 
     { 
     public void onItemClick(AdapterView<?> arg0,View arg1,int arg2, long arg3){ 
      ListView lv = (ListView) findViewById(R.id.listView1);  
      final String Name = lv.getAdapter().getItem(arg2).toString();    

      // Make sth on click 
     }}); 


     lv.setOnItemLongClickListener(new OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        final int arg2, long arg3) { 
      // Make sth on longclick 
      } 
     }); 

На длинной мыши оба будут выполнены. Это ошибка или проблема с моим кодом?

+0

«На длинном клике оба будут выполнены». ни один из них не будет выполнен в зависимости от клика, и этот 'ListView lv = (ListView) findViewById (R.id.listView1);' не требуется, может использовать 'arg0' – Raghunandan

ответ

2

Нет проблем с кодом, это просто, что вы не вернули значение на свой onItemLongClick boolean. Измените его на:

lv.setOnItemLongClickListener(new OnItemLongClickListener() { 
       @Override 
       public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
         final int arg2, long arg3) { 
       // Make sth on longclick 

       return true; 
       } 
      }); 

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

+0

Спасибо, в моем коде я hade' return false'. Изменил его, чтобы «вернуть истину» сделал это! – Oli

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