2014-02-03 3 views
1

В приведенном ниже коде onItemLongClick работает, только когда я комментирую onTouchListener. Мне нужно иметь возможность регистрировать swipes, а также длительные клики. Что я делаю не так?setOnTouchListener и setOnItemLongClickListener взаимоисключающие?

public class MainPageActivity extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    ... 

    getListView().setLongClickable(true); 
    getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getApplicationContext(), "long click", Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
    }); 

    getListView().setOnTouchListener(new OnSwipeTouchListener() { 
     public void onSwipeBottom() { 
      Toast.makeText(MainPageActivity.this, "bottom", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 
} 
+0

Что происходит в OnSwipeTouchListener? Если вы переопределяете onTouch, onDown или другие подобные методы, вам нужно убедиться, что вы возвращаете false, чтобы событие правильно распространялось. – rusmus

+0

методы onSwipe не имеют возвращаемых значений, связанных с ними. – user1876617

+0

OK, но OnSwipeTouchListener должен реализовать OnTouchListener, у которого есть возвращаемое значение. То же самое для SimpleGestureListener, поэтому вам нужно убедиться, что ваш слушатель позволяет размножаться. Btw. вам не нужно 'getListView(). setLongClickable (true);' – rusmus

ответ

0

Если вы перекрывая onTouch, onDown или другие методы, как, что, в OnTouchListener, SimpleGestureListener или тому подобном, вы должны убедиться, что ваш возвращается ложью, для того, чтобы события, чтобы правильно размножать.

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