728x90

TIL/숙련til 8

fragment에서 activity로 데이터 전달

프래그먼트에서 액티비티로 데이터를 전달하기 위해 먼저 인터페이스를 만들어야한다. FragmentDataListener라는 인터페이스를 다음과 같이 만들었다. 그리고 메인액티비티에서 필수로 FragmentDataListener를 상속받은 후 SecondFragment에서 Activity로 데이터를 전달하기 위한 메서드를 작성한다. 그 후 SecondFragment로 가서 FragmentDataListener 타입의 변수 listener를 선언한다. 메인액티비티로부터 context가 왔는지 확인하는 작업을 하는데, true면 listener에 context를 집어넣는다.=> listener를 이용해서 호출을한다. 호출은 실제로 btnSendActivity를 눌렀을때 하게된다. 그러면 listener에서 메인..

TIL/숙련til 2024.04.14

fragment에서 fragment로의 데이터 전달

이전글에서 activity에서 fragment로의 데이터 전달과정을 봤다면 이번에는 fragment에서 fragment로의 데이터 전달과정을 보겠다. 먼저 프래그먼트 1을 메인화면에 올려두었기때문에 프래그먼트 1에서 코드를 바로 작성하였다. go frag2 버튼(btnGofrag2) 을 누르면 dataToSend 변수에 데이터를 담아 SecondFragment에 객체를 생성해서 파라미터로 데이터를 담아 보낸다. 이때 프래그먼트도 교체가 되어야하기에 다음과 같이 작성한 것이다. SecondFragment에서도 FirstFragment와 동일하게 데이터를 받아야하기에 이전에 설명한 글과 같은 과정을 거친다. https://crablo12.tistory.com/121 프래그먼트 데이터전달 1. Acitivit..

TIL/숙련til 2024.04.14

프래그먼트 데이터전달 1. Acitivity -> Fragment

먼저 액티비티에서 프래그먼트로 데이터를 전달하기위해 버튼을 2개 올려두었다. 그 후 메인액티비티에 코드를 다음과 같이 작성했다. 첫번째 버튼(fragment1Btn)을 눌렀을때 newInstance를 통해 프래그먼트 객체를 생성한다. 그리고 dataToSend 변수에 스트링을 담아서 객체에 전달한다. 그 후 프래그먼트에서는 데이터를 받아야하기에 다음과 같은 과정으로 데이터를 받는다. 마찬가지로 2번째 버튼을 누를때도 같은 과정으로 코드를짠다면 결과적으로 아래와 같은 화면이 나온다.

TIL/숙련til 2024.04.14

프래그먼트란?

프래그먼트란? 먼저 프래그먼트란 무엇일까? 프래그먼트란 액티비티 위에서 동작하는 모듈화된 사용자 인터페이스이다. 액티비티와 분리되어 독립적으로 동작할 수 없어서 액티비티가 없다면 프래그먼트도 존재하지 않는다. 프래그먼트의 생명주기 안드로이드 공식분서에 따르면, 프래그먼트는 인스턴스화되면 initialized 상태에서 시작된다. 프래그먼트가 프래그먼트의 나머지 수명 주기를 전환하도록 하려면 프래그먼트를 FragmentManager 에 추가해야한다. FragmentManager가 프래그먼트가 어떤 상태여야하는지 확인한 다음 그 상태로 전환하는 일을 담당한다. 프래그먼트가 수명 주기를 벗어나면 FragmentManager는 프래그먼트를 호스트 활동에 연결하고 프래그먼트가 더 이상 사용되지 않을 때는 프래그먼트..

TIL/숙련til 2024.04.14

RecyclerView

저번에는 ListView나 GridView를 이용해서 사진을 나타내는 작업을 했는데 이번에는 RecyclerView를 사용하는 방법을 공부해보았다. RecyclerView도 ListView와 마찬가지로 adapter 클래스가 필요하다. 다만 다른점이 있다면 리스트뷰는 스크롤을 했을때 각 아이템들이 삭제되고 생성되기를 반복하여 성능이 떨어진다는 단점이 있지만, 리싸이클러뷰는 스크롤을 했을때, 삭제 및 생성을 반복하지 않고 재활용된다는 점이 있어서 리스트뷰보다는 리싸이클러뷰를 많이 사용한다고 한다. 리스트뷰와 같이 리싸이클러뷰도 adapter라는것을 사용한다고 했다. 하지만 리싸이클러뷰는 리스트뷰와 다르게 ViewHolder라는것을 사용해서 뷰에있는 아이템들을 재활용하는 기능을 갖추고 있다. 나는 정확히 이..

TIL/숙련til 2024.04.09

그리드 뷰(GridView)

먼저 그리드 뷰를 만들기 위해 activity_main.xml 파일에 GridView위젯을 추가하였다. 그 후 Adapter를 정의하기위해 ImageAdapter라는 클래스를 만들었고 그리드 뷰의 항목으로 간단한 텍스트가 아닌 이미지를 사용하고자 하는 경우에는 그리드 뷰의 항목으로 이미지를 공급하는 ImageAdapter를 BaseAdapter로부터 파생하여 정의하였다. 이미지는 adapter클래스에서 배열로 생성했고, 그 후 BaseAdapter의 getCount(), getItem(), getItemId(), getView() 메소드를 재정의 했다. 먼저 getCount()메서드는 항목의 총 개수를 반환하기 위해 mThumbIds 배열의 크기를 반환한다. getItem()는 특정 위치의 항목을 반환하..

TIL/숙련til 2024.04.09

리스트뷰(ListView)

ListView는 어댑터 뷰의 대표 위젯으로서, 복수 개의 항목을 수직으로 표시한다. 나는 먼저 BaseAdapter를 상속받는 어댑터를 만들지 않고 간단히 배열타입의 데이터를 넣을 수 있는 어댑터를 준비하고 데이터를 집어넣었다. 이때 원본데이터와 simple_list_item_1.xml 파일을 준비했다. simple_list_item_1 파일은 item 파일로 리스트뷰에 각 아이템들의 영역에 들어갈 뷰를 설정해준다고 보면된다.

TIL/숙련til 2024.04.09

어댑터뷰는 무엇인가?

adapter 는 adapterview와 데이터 원본 사이를 이어주는 징검다리라고 생각해보았고 어댑터뷰가 데이터 항목을 표시할때는 1. 어댑터뷰가 어댑터를 사용하기 위해서는 먼저 데이터 원본이 어댑터에 설정되어야 하고, 어댑터뷰에는 어댑터가 설정되어야 한다. 2. 어댑터뷰는 항목을 표시하기 위해서 먼저 표시할 항목의 총 개수를 알 필요가 있을 것이다. 이 때, 어댑터 뷰는 어댑터의 getCount()란 메소드를 통해 현재 어댑터가 관리하는 데이터 항목의 총 개수를 반환한다. 3. 어댑터 뷰는 어댑터의 getView()란 메소드를 통해서 화면에 실제로 표시할 항목뷰를 얻고, 이를 화면에 표시한다. 4. 사용자가 어댑터뷰의 특정 위치의 항목을 선택하였을 때, 어댑터뷰는 선택된 항목, 항목 id, 항목뷰를 어..

TIL/숙련til 2024.04.09
728x90