Tôi đang tìm kiếm một ListPreference trong đó người dùng có thể thay đổi thứ tự các mục từ danh sách. Các mục sẽ có thể kéo và có thể được người dùng sắp xếp lại.Làm thế nào để tạo một ListView với các mục có thể kéo?
Tôi thấy điều này trong ROM tùy chỉnh của mình (và tôi gần như chắc chắn mình đã thấy nó trong CyanogenMod) cho QuickPanel. Dưới đây là một ảnh chụp màn hình để có được những ý tưởng thông qua:
tôi biết làm thế nào tôi có thể làm cho các mục tùy chỉnh ListView và thiết lập các biểu tượng cho biết các mặt hàng là có thể kéo, nhưng tôi không biết làm thế nào để làm cho họ có thể kéo và thay đổi thứ tự cho phù hợp. Đối với việc lưu chúng trong các sở thích, tôi tìm thấy this có thể được thực hiện dễ dàng.
PS: Tôi biết CyanogenMod là mã nguồn mở, nhưng tôi không thể tìm ra nguồn cho điều đặc biệt này :(Gần nhất tôi có thể nhận được là this, mà nên ở nơi gần màn hình khác ...
Cảm ơn trước cho bất kỳ đầu về vấn đề này
CẬP NHẬT:. tôi đã kết thúc bằng cách sử dụng các tập tin từ câu trả lời chấp nhận, với bổ sung và sửa đổi tôi liệt kê chúng ở đây để tham khảo thêm
-
..
Sử dụng Bộ điều hợp tùy chỉnh (ArrayAdapter trong trường hợp của tôi), để triển khai phản hồi trực quan mà mục này có thể kéo được, đó là một ImageView gần TextView. Đây là tùy chọn.
Đặt DragListener và RemoveListener để cập nhật danh sách tương ứng. ListView không tự động làm điều đó. Và nó phụ thuộc vào Adapter bạn đang sử dụng.
Có một dòng đã tạo Chế độ xem cho Nhóm xem, nó tạo ra một số lỗi, vì vậy tôi đã xóa bỏ diễn viên mà không gặp bất kỳ vấn đề gì, điều đó là không cần thiết. (trong phương thức onInterceptTouchEvent).
Thay đổi
mRemoveMode = 1;
trong hàm tạo của TouchInterceptor hoặc một trong số:FLING = 0; SLIDE = 1; TRASH = 2;
. Tôi nghĩ rằng đối vớiTRASH
, tài nguyên cũng sẽ khả dụng.
Tôi thực sự lấy tệp không phải từ liên kết của câu trả lời nhưng từ tệp CyanogenMod mà tôi đã có, nhưng tôi đoán các tệp này giống nhau.
Đây là các tập tin thực tế trong dự án (tại r12, tại thời điểm viết bài):
- The Preference using this ListView
- The ListActivity with the listeners and the Adapter
- The actual ListView
Tôi hy vọng nó giúp người khác :)
Không có chức năng tiêu chuẩn cho điều này, vì vậy bạn phải ghi đè lên Chạm và phát hiện sự kiện chạm. Ghi đè của bạn có thể sẽ được kích hoạt bởi sự kiện longClick, nếu không bạn không biết liệu người dùng có muốn kéo một mục hay cuộn danh sách hay không. – Christine
@Christine Tôi không thể sử dụng [OnDragListener] (http://developer.android.com/reference/android/view/View.OnDragListener.html)? – jadkik94
@ jadkik94 Xin chào. Tôi đang cố gắng thực hiện điều tương tự bằng cách sử dụng các tệp này. Nhưng vì nó là một câu hỏi khá cũ, tôi đã tự hỏi nếu có một tốt hơn hay đúng hơn là tôi muốn nói phương pháp thuận tiện hơn để thực hiện một danh sách kéo có thể đến hay không? Tôi không thể tìm thấy bất kỳ mặc dù. Sẽ đánh giá cao bất kỳ con trỏ bạn có thể cung cấp cho .. Cảm ơn. – Anjani