2011-07-06 32 views
21

Tôi có danh sách các video nằm trong thẻ sd. Tại thời điểm này, tôi chỉ cần trợ giúp trong việc tạo cử chỉ hoặc phát hiện swipe cho mỗi hàng trong chế độ xem danh sách. Nhờ câu hỏi này tại stackoverflow Fling gesture detection on grid layout, tôi đã thực hiện cử chỉ trên listview. Nó bây giờ dễ dàng phát hiện khi người dùng vuốt theo hướng đúng hoặc hướng trái. Nhưng cử chỉ này là cho toàn bộ listview. Tôi chỉ muốn biết làm thế nào tôi có thể thực hiện phát hiện swipe này cho các hàng riêng lẻ. Ví dụ, ứng dụng bây giờ làm cho một bánh mì nướng in "Phải swipe", "Swipe trái". Tôi chỉ muốn làm cho nó như "Swipe ngay trên hàng số 1", "Swipe trái trên Row no 3" vv .. Tôi hy vọng câu hỏi của tôi là rõ ràng.Phát hiện swipe cho mỗi hàng listview

Mong một số câu trả lời hữu ích. Cảm ơn

+1

Bạn đã thử triển khai vuốt ListView được đề xuất [ở đây] [1] chưa? [1]: http://stackoverflow.com/questions/4373485/android-swipe-on-list/9340202#9340202 –

Trả lời

0

Tôi nghĩ rằng những gì bạn đang tìm kiếm là SwipeView (hoặc thậm chí ViewFlow) thay vì phát hiện cử chỉ Android chuẩn.

+0

SwipeView hoặc ViewFlow được sử dụng tốt nhất trong những trường hợp mà chúng tôi có quan điểm khác nhau. Tôi có một listView duy nhất với một số mục xuất hiện trên cùng một trang. Tôi chỉ muốn có được cử chỉ swipe cho mỗi hàng cá nhân .. Bất kỳ đề xuất khác ?? –

1

Tôi đang sử dụng phương pháp tiếp cận từng mục trong giải pháp của mình - hãy xem here Mã phát hiện swipe của tôi có thể hơi khác với phát hiện vuốt chuẩn nhưng nó hoạt động hoàn hảo cho tôi. Và tôi đang sử dụng các thẻ đính kèm để lấy dữ liệu liên quan đến mục. Hy vọng rằng sẽ giúp, nhưng nếu bạn có một số câu hỏi chỉ cho tôi biết và tôi sẽ cố gắng giải thích chi tiết hơn.

1

Như mỗi Opinion của tôi là sử dụng Boolean cho mặt hàng đó, Khi mục được chạm vào thiết lập như là sự thật, Sử dụng onTouchListener,

ListItem.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent event) { 
      click=true; 
      return click; 


     } 

    });` 

Sau đó, Bạn có thể Override này:

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
super.dispatchTouchEvent(ev); 
Log.v("Inside", "=====Dispatch Event==="); 
if(click){ 
    Log.v("Inside", "=====Dispatch Event=T=="); 
    click=false; 
    return gestureDetector.onTouchEvent(ev); 

}else{ 
    return false; 
} 

} 
4

Hãy xem vào this answer và sử dụng phương thức pointToPosition bên trong onFling Sự kiện

@Override 
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    try { 
     Toast.makeText(listAdapter.getItem(listView.pointToPosition(Math.round(e1.getX()), Math.round(e1.getY())).toString()); 
     return super.onFling(); 
    } catch(Exception e) { 
     // do nothing 
    } 
} 
Các vấn đề liên quan