본문 바로가기

TIL

[TIL] Fragment에 RecyclerView 적용하기

[오늘 배운 내용]

-1- Fragment에 RecyclerView 적용하기

  • Fragment에 RecyclerView를 적용하려면 먼저 Fragment를 생성해야 한다.
    • Fragment 생성 및 적용 방법
 

[TIL] Fragment, Bottom Navigation, System UI isn't responding

[오늘 배운 내용] -1- Fragment Fragment란? Activitiy 안에서 화면의 일부를 구성하는 것이다. Fragment는 또 다른 Fragment 내에서도 생성될 수 있다. Fragment 사용하는 이유 간단한 예시로 확인해보자 넷플릭

junes-daily.tistory.com

  • 기존에 Acitivity에 ViewBinding을 적용하고, xml 뷰를 화면에 띄우는 방법은 Activity Class내부의 onCreate에서 적용하고 setContentView로 설정했는데, Fragment에서는 viewBinding의 적용 및 뷰를 화면에 띄우려면 onCreateView() 메소드내에서 적용 해주어야 한다.
  • Fragment의 onCreateView에서 적용해야하는 이유
    • Activity의 생명주기 메서드 중에는 onCreateView가 없다. 왜냐하면 Activity는 화면 전체를 관리하는 컨테이너 역할을 하기 때문에 setContentView() 메서드를 통해 한번에 설정이 된다. 이로 인해 Activity의 UI 구성 요소들은 주로 xml 레이아웃 파일을 사용하여 정적으로 생성하거나, 필요한 경우 코드에서 동적으로 추가.
    • Fragment의 경우 Fragment는 재사용이 가능한 UI 구성 요소로 하나의 Activity 내에서 여러 개의 Fragment의 조합으로 모듈화된 UI를 만들 수 있지만 Fragment 자체로는 화면 전체를 관리하는 컨테이너 역할을 할 수 없고, 화면 영역을 가지고 해당 영역 내에서 독립적인 UI를 구성하는 역할을 하기 때문이다.
    • Fragment의 onCreateView는 Fragment가 처음 생성되거나 재사용될 때 호출되어 해당 Fragment의 View 계층구조를 inflate(xml에 표기된 레이아웃들을 메모리에 객체화 시키는 행동)하여 View를 반환

 

 

 

Fragment의 ViewBinding 적용 및 adapter 연결

class NewsListView : Fragment() {
    // TODO: Rename and change types of parameters
    private var param1: String? = null
    private var param2: String? = null
    private lateinit var binding : FragmentNewsListViewBinding
    val newsList = mutableListOf<NewsData>()
    
    init {
    	newsList.apply {...}
    }
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        arguments?.let {
            param1 = it.getString(ARG_PARAM1)
            param2 = it.getString(ARG_PARAM2)
        }
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentNewsListViewBinding.inflate(inflater,container,false)
        val adapter = MyAdapter(newsList)
        binding.recyclerviewNewsList.adapter = adapter
        binding.recyclerviewNewsList.layoutManager=LinearLayoutManager(requireContext())
        binding.recyclerviewNewsList.addItemDecoration(DividerItemDecoration(requireContext(),LinearLayout.VERTICAL))

        return binding.root
    }

 

 

 

 


 

[오늘 복습한 내용]

1. Activity의 생명주기

  • Activity는 안드로이드 앱에서 사용자 인터페이스(UI)를 제공하는 주요 구성 요소이다. 사용자가 앱과 상호작용을 할 때, Activity는 다양한 상태를 거쳐 실행되는데 이러한 상태 변화를 생명주기라고 한다.
  • Kotlin의 Activity 생명주기 메서드는 다음과 같은 순서로 호출된다.
  • 1. onCreate()
    • Activity가 생성될 때 호출된다. UI 요소들을 초기화하고, 데이터 바인딩 등 초기 설정 작업을 수행
  • 2. onStart()
    • Activity가사용자에게 보여지기 직전에 호출된다.
  • 3. onResume
    • Activity가 포그라운드로 전환되어 사용자와 상호작용하기 시작할 때 호출된다.
  • 4. onPause()
    •  다른 Activity가 포그라운드로 나타나거나, 화면이 꺼지거나, 다른 상황으로 인해 현재 Activity가 더 이상 사용자에게 보여지지 않을 때 호출된다.
  • 5. onStop()
    • Activity가 더 이상 사용자에게 보여지지 않을 때 호출 된다.
  • 6. onRestart()
    • onStop() 후 Activity가 완전히 종료되지 않은 경우 Activity가 다시 시작되기 전에 호출된다
  • 7. onDestroy()
    • Activity가 소멸되기 전에 호출된다.
  • 또한 일부 이벤트에 대한 추가적인 콜백 메서드도 있다.
  • onSaveInstanceState()
    • 시스템이 예기치 않게 액티비티를 종료할 때 Activity의 상태를 저장하는 용도로 호출된다.
  • onRestoreInstanceState()
    • Activity의 onSaveInstanceState()에서 저장한 데이터를 복원하는 용도로 호출된다.

 


[오류,에러 등등]


[느낀 점]

1. Fragment는 어렵지만 꾸준히 하면 익숙해질 것 같다 점점 더 코딩에 재미가 더 붙는 것 같다.

 

2. 어떤 방식으로 무엇에 집중할지를 계획해보며 구상 해보는 것이 굉장히 중요한 것 같다.

 

3. 열심히 하자

 


[Reference]

 

// Activity 생명주기

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko

// inflate

https://soo0100.tistory.com/1017