안드로이드 리사이클러뷰 아이템 스와이프해서 버튼 띄우기 [Android, JAVA]
코딩/안드로이드 2022. 9. 10. 22:02

리사이클러뷰의 각 아이템을 스와이프해서 추가적인 동작을 구현하고자 한다. 코딩의 미덕은 구글링이듯이, 사실 아래 블로그 보고 그대로 따라했다. https://codeburst.io/android-swipe-menu-with-recyclerview-8f28a235ff28 Android swipe menu with RecyclerView Using ItemTouchHelper Callback without any external libraries codeburst.io ItemTouchHelper를 활용하여 스와이프 시 해당하는 동작들을 정의해주는 것이 핵심이다. SwipeController를 통한 기본 설정 ItemTouchHelpler의 Callback을 구현하는 SwipeController 클래스를 통..

안드로이드 이메일, 비밀번호 입력 폼 (머테리얼 디자인) [Android, JAVA]
코딩/안드로이드 2022. 3. 12. 00:56

회원가입을 위한 간단한 이메일 / 비밀번호 입력 폼을 구현하려고 한다. 사실 머테리얼 디자인에서 텍스트 필드를 활용하면 정말 쉽게 구현할 수 있다. Material Design Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences. material.io xml 세팅 머테리얼 디자인의 텍스트 필드를 보면, TextInputEditText를 TextInputLayout이 감싸는 구조이다. 입력과 관련된 부분은 editText가, 이외 부분들은 layout을 만지면 된다. 따..

안드로이드 트리 구조 리사이클러뷰 구현 (접었다 폈다) [Android, JAVA]
코딩/안드로이드 2022. 2. 19. 12:34

트리 구조로 리사이클러뷰를 사용하고 싶은 경우가 있다. 각 가게들의 쿠폰을 저장하기 위해서, 각 가게 - 각 쿠폰의 트리 구조로 리사이클러뷰를 구현하고자 했다. 가장 간단한 방법은 리사이클러뷰에 붙이는 아이템의 종류를 헤더(가게) / 자식(쿠폰)으로 나눠서 역할을 분리하는 것이다. 하나의 리사이클러뷰에 [동일 클래스] 가게-쿠폰-쿠폰-쿠폰-가게-쿠폰-쿠폰.... 로 해버리는 것이다. 쿠폰 객체 구성 일단 사용할 쿠폰에 관련된 데이터를 들고 있는 클래스를 선언하자. 쿠폰 id, 가게명, 쿠폰명 등등을 필드로 갖고 있다. @Getter @Setter @AllArgsConstructor @Builder public class CouponModel{ long couponId; String storeName; S..

안드로이드 Daum 주소 검색 API 활용하기 [Android]
코딩/안드로이드 2022. 2. 18. 14:16

다음 주소 찾기 API 활용하기 회원가입이나 주문 과정에서, 배송 정보를 입력받기 위해서는 정확한 주소를 입력받아야 한다. 네이버 지도에선 주소 찾기 API를 제공하지 않아 다음의 우편번호 서비스 API를 활용하고자 한다. KEY 발급이나, 사용량에 제한이 없고 언제나 무료로 사용할 수 있어서 정말 편한 것 같다. Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 대략적인 방법은 다음과 같다. Daum API에서 제공하는 js 스크립트를 넣은 HTML 파일을 서버에 업로드 안드로이드에선 웹뷰로 해당 HTML 파일을 실행..

JetPack 직전 DialogFragment 값 받아오기 (BackStackEntry, SavedStateHandle) [Android
코딩/안드로이드 2022. 2. 11. 14:59

Fragment에서 직전 DialogFragment의 값 받아오기 JetPack Navigation을 사용하며 Fragment들을 navigate할 때, DialogFragment를 사용하며 값을 받아올 일이 있다. 과정 : 주문 과정 중 쿠폰 선택 문제 : DialogFragment(쿠폰 선택 화면)에서 선택한 쿠폰 값을 Dialog를 호출한 Fragment(주문 화면)으로 받아와야 함 Safe Args나 Bundle을 사용해 값 이동 (Navigate로 화면 전환) 이 경우에는 결국 주문 화면을 재호출하기 때문에, 쿠폰 선택 이전에 입력되었던 값들이 모두 초기화되어 버린다. 따라서 DialogFragment를 종료하며 값을 전달해야 했다. ViewModel 사용 Fragment와 DialogFragm..

RecyclerView 아이템 클릭 이벤트 구현 [Android, JAVA]
코딩/안드로이드 2022. 1. 29. 21:31

보통 RecyclerView를 사용하면 Adapter를 사용해서 내부 아이템을 관리하게 된다. 여기서 각 아이템을 클릭했을 때 -> 화면을 이동시키고 싶은데, NavController를 어댑터에 넘겨주자니 뭔가 애매한 경우가 있다. 나아가 클릭 이벤트 발생 시 아이템 내부가 아니라 프래그먼트에서 처리해야 할 때, 그 동작을 아이템 외부로 넘겨줘야 하는 경우에 다음 방법을 사용할 수 있다. 과정 : 상점 목록에서 상점 클릭 시 상점 세부화면으로 이동 문제 : RecyclerView Adapter의 Viewholder에서 클릭 이벤트로 프래그먼트 전환 ClickListener 인터페이스 활용 다음과 같은 구조로 클릭 이벤트를 처리하면 쉽게 어댑터 외부 (프래그먼트)에서 클릭 이벤트를 처리할 수 있다. 클릭 ..

React-Native Network Request Failed Error [Android]
코딩/안드로이드 2021. 2. 16. 12:38

리액트 네이티브로 만든 안드로이드 어플리케이션에서 Rest 통신을 할 일이 생겼다. 다음과 같이 AndroidManifest.xml에서 Internet 퍼미션을 주고 간단하게 fetch를 사용해서 요청하려고 했지만 Network Request failed 오류가 발생했다. const getMessageFromApi = () => { return fetch('http://127.0.0.1:5000/message', {method:'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body : JSON.stringify({message : dummyVal}) }) .then((response) => res..