일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- oberve url
- swift #swift keychain #keychain 사용법
- List
- SwiftUI
- Side Menu
- 스크롤 탭
- base64 변환
- 상단 탭바
- GeometryReader
- url 관찰
- UIViewControllerTransitioningDelegate
- url 추적
- ViewBuilder
- Android
- scrolling tab
- DevelopmentRegion
- convert base64
- 개발자 면접
- transformation.map
- detect url
- DataBinding
- Tuist
- 기존 앱
- notifychanged
- pod install
- swift
- UIPresentationController
- Swift Package Manager
- ios
- development language
- Today
- Total
버그 잡이
RecyclerView 선택 삭제, action Mode, contextual action bar 본문
오늘은 위와 같은 기능을 만들어보겠습니다.
정확히는 위와 같은 기능을 만든 외국 자료를 바탕으로 정리해보겠습니다.
https://blog.teamtreehouse.com/contextual-action-bars-removing-items-recyclerview
내용이 어렵지 않으니 원문을 먼저 읽고 도전해보신 후 제 글을 부가적으로 보시는 것을 추천드립니다.
*그리고 코드가 분산되어 있으니 전체적인 흐름 이해를 위해 원문의 github 자료와 함께 보시는 것을 추천드립니다.
1. 롱 클릭(long-click) 했을때 CAB가 실행되도록 만들어보자. 이를 위해서는 우선 'startSupportActionMode'를 불러와야한다.
(Adapter -> class Viewholder -> void update 생성 후 안에 코드를 작성해주시면 됩니다.(원문 깃허브 참조))
*참고로 저는 위와 같이 쳤을때, "actionModeCallbacks" 부분에 빨간 밑줄이 생겼습니다.
해결방법을 구글링 해본 결과 startSupportActionMode() 를 startActionMode() 로 바꿔주니 해결이 되었습니다.
2. 다음으로 actionModeCallbacks 객체를 채워줘야 합니다.
*onCreateActionMode : actionMode 작동시 처리 -> 여기서는 'delete' 메뉴 생성
*onPrepareActionMode : 음... 잘 모르겠습니다. 하지만 이거는 안 건드려도 잘 작동됩니다.
*onActionItemClicked : delete 버튼을 눌렀을때 처리
*onDestroyActionMode : actionMode 종료 -> mode.finish()
(각 항목을 채우면 아래와 같습니다.)
3. CAB의 시작은 ActionMode 이전에 update라는함수에서 시작합니다.
여기서 주목할 부분은 selectItem 이라는 메서드입니다.
이름 그대로 선택된 항목을 관리(추가, 삭제)해주는 메서드입니다. (추후에 이 항목을 가지고 remove를 하겠죠?)
선택시 selectedItems라는 배열에 추가해주고 선택된 항목을 한번 더 눌르면 배열에서 제거가 됩니다.
(물론 이를 위해서는 selectedItem이라는 배열을 선언해줘야겠죠? *원문의 github 자료 참고)
자 이렇게 기본적인 개념을 알아보았습니다.
제 글로 기본 개념만 익히시고 원문의 github자료를 보며 따라 쳐보시면 쉽게 만드실 수 있을겁니다!
(주의!!)
onBindViewHolder에 아래와 같이 update를 추가해주시는 것을 잊지마세요.
저도 처음에 이걸 놓쳐서 왜 실행이 안되는지 한참을 해맸습니다ㅜㅜ
'안드로이드' 카테고리의 다른 글
picass vs glide vs fresco 안드로이드 이미지 라이브러리 비교 (0) | 2020.03.13 |
---|---|
안드로이드(android) 위젯(widget) 만들기 (1) | 2020.03.10 |
안드로이드 EditText 안에 스크롤바 넣기, 키보드 뜰때 밀림 현상 해결 (0) | 2019.11.03 |
안드로이드 getIntent() 두 개 이상 받기. (0) | 2019.10.27 |
안드로이드 잠금화면(screen-rock) 기능 만들기 (0) | 2019.10.13 |