Drag and Drop RecyclerView in Android using Android Studio – Kotlin

얘들 아 CodeAndroid의 Vignesh입니다

이 비디오에서는 항목 RecyclerView를 끌어다 놓는 방법을 보여줍니다 이것을 설명하기 위해 ToDo List Application 코드를 사용하려고합니다 하위 작업 내에서 하위 작업 순서를 지정하는 아이콘이 필요합니다 항목 작업 열기, 여기서는 RecyclerView를위한 touchHelper를 설정하려고합니다 우리가 항목을 드래그 앤 드롭 할 수있게 해줍니다 나중에 이미지 뷰를 추가합니다

val touchHelper가 ItemTouchHelper와 같으면 콜백을 전달해야합니다 ItemTouchHelper의 객체, 우리는 SimpleCallback을 사용할 것입니다 내부에서 dragDirection과 swipeDirection을 전달해야합니다 항목을 위아래로 이동할 수 있습니다 그래서 ItemTouchHelper

UP 또는 ItemTouchHelperDOWN을 제공하고 있습니다 따라서 항목을 이동할 수있는 방법 swipeDirection의 경우 항목을 스 와이프 할 수 없음을 의미하는 0을 제공합니다 누락 된 회원을 구현해 보겠습니다 이 onSwiped는 swipeDirection을 0으로 지정했기 때문에 호출되지 않습니다

항목을 드래그하는 동안이 onMove가 호출됩니다 여기에서 우리는 아이템을 교환해야합니다 그래서 p1에서 소스 어댑터 위치를 얻고 있습니다 sourcePosition이라는 값에 저장 마찬가지로 p2 ViewHolder에서 targetPosition 가져 오기 이제 RecyclerView 목록의 항목을 바꿔야합니다 이를 위해 우리는 목록에 액세스해야합니다

그래서 RecyclerView 데이터를 저장하기 위해 list라는 전역 값을 생성합니다 전역 변수에 목록을 저장하고 어댑터에 전달하는 refreshList에 "Collections"클래스를 사용하여 sourcePosition을 사용하여 목록의 항목을 targetPosition으로 교체합니다 스와핑은 Collections 클래스 자체에서 수행됩니다 그래서 우리는 아무것도 처리 할 필요가 없습니다 항목을 교환 한 후 어댑터에 대한 변경 사항을 알릴 필요가 있습니다

그래서 나는 어댑터를 전역 변수에 저장하고있다 전역 변수를 RecyclerView의 어댑터로 설정하기 notifyItemMoved를 호출 할 필요가있는 것을 통지하기 위해서 내부에서 sourcePosition과 targetPosition을 전달해야합니다 이 onMove는 Boolean을 반환해야하므로 true를 반환합니다 마지막으로 attachToRecyclerView를 사용하여 RecyclerView에 touchHelper를 연결합니다 자, 응용 프로그램을 시작합니다

이제는 길게 눌러 작업을 이동할 수 있습니다 길게 누르지 않으려면 아이콘을 줄 수 있습니다 해당 사용자를 사용하면 쉽게 항목을 이동할 수 있습니다 그것을하는 방법을 볼 수 있습니다 아이콘 소스의 경우 드로어 블 폴더 안에있는 이동 아이콘을 복사하고 있습니다

item 자식의 레이아웃 파일에서 ImageView를 추가해야합니다 그래서 ImageView 삭제를 복제하고 있습니다 소스를 ic_move로 변경하고 id를 iv_move로 변경하십시오 이동 아이콘 전에 삭제 아이콘을 원합니다 그래서 toLeftOf와 toStartOf를 iv_move로 추가합니다 우리는 이것을 ViewHolder 내부에 링크해야한다

그 후 이동 아이콘에 대한 onTouchListener actionMasked 이벤트가 ACTION_DOWN과 같으면 드래그를 시작해야합니다 touchHelper에 액세스해야합니다 그래서이 touchHelper를 전역 변수로 변환하려고합니다 여기서 우리는 null 경고를 얻고 있으므로 null-safety를 추가합니다 null이 아닌 경우 RecyclerView에 연결하고, 그렇지 않으면 아무것도하지 않습니다

ViewHolper를 전달하여 드래그를 시작하는 touchHelper 사용 여기서도 리턴 유형으로 부울이 필요합니다 그러나 여기 나는 거짓을 전달하고있다 자, 응용 프로그램을 시작합니다 길게 누르지 않아도 항목을 이동할 수있는 항목을 볼 수 있습니다 이 재정렬은 로컬에 저장됩니다

활동을 다시 불러 오면 준비가 끝납니다 배열을 유지하려면 서버 또는 데이터베이스에 순서를 저장해야합니다 이 비디오 녀석들을위한 모든 것 나를 지원하기 원한다면 wwwpatreoncom/CodeAndroid에서 애호가가되어 그렇게 할 수 있습니다

너가 좋아하길 바래 내 다음 비디오에서 보자 좋은 하루 되세요