내일배움캠프 35일차

김재현·2024년 4월 16일

데이터전달과 다이얼로그, 알림, 스크롤 상단 이동, 상품삭제까지 구현해보았다.

데이터전달

  • 원래는 프래그먼트로 화면을 구성하였는데 Parcelize를 사용하여 intent로 데이터를 보내는게 필수 구현사항에 있어서 DeatilActivity로 바꿨다.

  • 먼저 plugin에 id("kotlin-parcelize")를 추가해준다.

  • 그 다음 데이터 클래스에서 @Parcelize 어노테이션을 추가해주면 된다.

  • MainActivity에서 position에 맞는 데이터를 DetailActivity로 보내주고

  • var getItem 변수에 getParcelableExtra를 통해 키값으로 데이터를 받아주고 각 항목에 맞는 textview로 값을 설정해주었다.

  • 메인에서 첫번째 항목을 클릭하면

  • 가격, 이름, 제목, 이미지, 설명이 같이 넘어온다.

뒤로가기 다이얼로그

  • 다이얼로그는 수업내용을 토대로 작성해보았다.
  • override fun onBackPressed()는 호출하지않아도 적용된다. title과 message를 설정해주고 icon도 설정해주었다. 그 다음 listener를 통해 onClick 메서드로 클릭시 이벤트를 지정해주었다. (확인을 누르면 종료된다)
  • 여기서 확인을 누르면
  • 앱이 종료된다.

알림

  • 이 부분도 강의 내용을 보면서 따라해보았다.
  • 버전에 따라서 build 되도록 if문을 사용하였고 builder.run부터 알림에 표시되는 내용이다.
    icon과 title, text를 지정해주고 when에 currentTimeMillis는 현재시각을 알림에 나타내준다. manager.notify(11, builder.build())를 통해 알림을 표시해준다.
  • notification 버튼을 눌러주면 다음과 같이 알림이 도착한다.

스크롤 상단 이동

  • 플로팅 버튼을 통해 상단으로 이동시키는 기능을 추가해보았다.
  • 구현할 activity_main 레이아웃에 플로팅 버튼을 생성해주고

  • fadeIn&Out에서 AlphaAnimation은 1f:보이기, 0f:숨기기로 fadeIn은 서서히 나타나도록 fadeOut은 서서히 사라지도록 animation 기능을 추가한 것이다. startAnimation으로 지정.
  • canScrollVertically(-1)은 수직 리스트로 최상단일 경우에 false 값을 return한다.
  • if문을 사용하여 최상단일때는 플로팅 버튼이 보이지않도록 하고 아닐때는 플로팅 버튼이 보이도록 설정해주었다.
  • 마지막 setOnClickListener는 상단으로 올려주는 역할을 하고있다.
  • 최상단에서 화면을 스크롤하면
  • 플로팅 버튼이 나타나는 것을 볼수있다.

참고 :
https://notepad96.tistory.com/190,
https://velog.io/@boomshh/20230828-%EC%8A%A4%ED%81%AC%EB%A1%A4-%EC%83%81%EB%8B%A8-%EC%9D%B4%EB%8F%99

상품 삭제

  • longClick을 통해 상품을 삭제하는 다이얼로그를 띄우고 삭제할 수 있는 기능이다.
  • 먼저 MainAdapter에 interface를 추가해주고
  • onBindViewHolder에 다음과 같이 setOnLongClickListener를 추가해준다.
  • 그 다음 MainAcitivity에서 다이얼로그 설정을 해주고 positive 버튼을 눌렀을때 itemList의 포지션에 맞는 item을 지우는 메서드를 설정해주고 notifyDataSetChanged를 통해서 아이템이 삭제된 recyclerview를 다시 그려준다. dismiss는 창을 닫는다고(?) 알고있다! 마지막으로 builder.show()로 보여주면 끝!
  • longClick시 다음과 같은 다이얼로그가 뜨고 삭제를 누르면
  • 첫번째 recyclerview가 지워진것을 확인할 수 있다.
    .
    .
    .
    사실 이 부분은 뭔가 감이 잘 안잡힌다...ㅠ

참고 : https://velog.io/@boomshh/20230906-longClick

하루의 마무리

  • 내일은 좋아요 기능 구현해보면서 마무리해야겠다. 저녁에는 스탠다드반 예습 해야할게 있어서 하고 자야겠다.

0개의 댓글