2009-08-27 6 views
6

메인보기에 ListActivity 인 Android 앱이 있습니다. 목록에는 TextView 및 숨김 삭제 버튼이있는 LinearLayout이 있습니다. 삭제 단추는 기본적으로 숨겨져 있습니다. 나는 단추를 보여주는 손가락 제스처를 사용하고 싶습니다. stackoverflow에 대한 질문 # 937313 덕분에 fling 제스처를 감지 할 수 있습니다. onTouch 리스너가 ListView을 청취하기 때문에 목록에서 어떤 항목이 빠졌는지 확인하는 방법은 분명하지 않습니다. 항목을 반드시 선택하지 않아도되므로 getSelected * 메소드를 안정적으로 사용할 수 없습니다. SimpleListAdaptor을 사용하고 있으므로 ListView의 뷰 객체에 직접 액세스 할 수 없습니다.안드로이드에 대한 제스처 동작을 가장 잘 처리하는 방법 ListActivity

아이디어가 있으십니까?

답변

14

AbsListView.pointToPosition()을 사용하여 목록보기에서 X, Y 좌표의 목록 항목을 확인하십시오.

당신이 # 937313에서 조리법을 사용하는 경우, 다음과 같이 onFling() 더 많거나 적은를 오버라이드 (override) 할 수 있어야한다 :() * INT 소요 그래서 * 수학을 사용하는 인자로 떠하지

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    try { 
     Toast.makeText(listAdapter.getItem(listView.pointToPosition((int) e1.getX(), (int) e1.getY()).toString()); 
     return super.onFling(); 
    } catch(Exception e) { 
     // do nothing 
    } 
} 
+2

* pointToPosition을 * e1.getX(), e1.getY() *를 직접 사용하는 대신 .round (e1.getX()), Math.round (e1.getY() – FreewheelNat

관련 문제