티스토리 뷰
Android/RecyclerView
[ RecyclerView #1 ] ItemMoveToSwipe ( ItemTouchHelper )
녹색꼬맹이 2018. 12. 20. 18:25반응형
SMALL
1 2 3 4 | public interface ItemTouchHelperListener { void onItemMove(int fromPosition, int toPosition); void onItemDismiss(int position); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | public class SwipeController extends ItemTouchHelper.Callback { private ItemTouchHelperListener itemTouchHelperListener; public SwipeController(ItemTouchHelperListener itemTouchHelperListener) { this.itemTouchHelperListener = itemTouchHelperListener; } /** * ItemTouchHelper는 이벤트의 방향(direction)을 쉽게 찾을 수 있게 한다. 어떠한 방향으로 drag 혹은 swipe 되었는지 알려면 getMovementFlags() 를 반드시 override 해야 한다. * return 값으로 ItemTouchHelper.makeMovementFlags(int, int)를 사용하여 dragging 과 swipe 를 양쪽 방향으로 사용할 수 있다. */ @Override public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; return makeMovementFlags(dragFlags, swipeFlags); } @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder fromViewHolder, @NonNull RecyclerView.ViewHolder toViewHolder) { itemTouchHelperListener.onItemMove(fromViewHolder.getAdapterPosition(), toViewHolder.getAdapterPosition()); return true; } @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { itemTouchHelperListener.onItemDismiss(viewHolder.getAdapterPosition()); } @Override public boolean isLongPressDragEnabled() { return true; } @Override public boolean isItemViewSwipeEnabled() { return true; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | public class MainActivity extends AppCompatActivity { private RecyclerView list; private ListAdapter listAdapter; private SwipeController swipeController; private ItemTouchHelper itemTouchHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list = findViewById(R.id.list); listAdapter = new ListAdapter(); list.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); list.setAdapter(listAdapter); swipeController = new SwipeController(itemTouchHelperListener); itemTouchHelper = new ItemTouchHelper(swipeController); itemTouchHelper.attachToRecyclerView(list); } private ItemTouchHelperListener itemTouchHelperListener = new ItemTouchHelperListener() { @Override public void onItemMove(int fromPosition, int toPosition) { if (listAdapter != null) { listAdapter.notifyItemMoved(fromPosition, toPosition); } } @Override public void onItemDismiss(int position) { if (listAdapter != null) { listAdapter.notifyItemRemoved(position); } } }; } | cs |
반응형
LIST
'Android > RecyclerView' 카테고리의 다른 글
[ RecyclerView #3 ] GestureDetector ( RecyclerView or ScrollView ) (0) | 2022.12.20 |
---|
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 쏘렌토 하이브리드
- widget 이미지 로딩
- 쏘렌토 하이브리드 시그니처
- 갤럭시 워치
- Foldable Event
- 웨어러블
- widget onreceive
- 폴더블 이벤트 받기
- 역시 키크론이네
- Dot indicator
- 가중치랜덤
- android widget 만들기
- widget 만들기
- 안드로이드 폴드 대응
- widget glide
- RandomColor
- flutter web
- Android
- widget onupdate
- 폴더블 상태 유지
- Android Wear Os
- 맥 전용
- 랜덤컬러
- aos img url bitmap
- 프래그먼트 데이터 저장
- 폰과 워치 페어링
- wear os
- 안드로이드 플립 대응
- 풀배열 키보드
- Fragment data
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함