본문 바로가기

Android + Kotlin

DataBinding을 사용한 BaseFragment 만들기

반응형

이전 BaseActivity에 이이서 BaseFragment에 대해서 설명 드리겠습니다.

 

BaseActivity는 아래 링크를 확인해주세요.

 

DataBinding을 결합한 BaseActivity 만들기

우리는 개발을 하면서, 반복적이고 공통적인 코드를 기계적으로 코딩(Bolierplate 코드)을 하게됩니다. 그로인해 코드가 늘어나고, 간결하게 보이지 않아 코드 분석이 불편한 경험도 하게 됩니다.

heeeju4lov.tistory.com

 

BaseFragment도 반복적이고 공통적인 코드를 조금이나마 재사용과 간결하게 하기위해서 사용합니다.

 

<BaseFragment>

abstract class BaseFragment<T: ViewDataBinding>(@LayoutRes private val layoutId: Int): Fragment() {

    protected lateinit var binding: T

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = DataBindingUtil.inflate(inflater, layoutId, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initView()
        initViewModel()
        initListener()
        afterViewCreated()
    }

    protected open fun initView() {}
    protected open fun initViewModel() {}
    protected open fun initListener() {}
    protected open fun afterViewCreated() {}

}

 

 

위와 같이 layout을 생성하고, 각각의 초기화 함수들을 호출해 주는 BaseFragment입니다.

 

사용은 아래 코드와 같이 Fragment에서 상속을 받아서 사용합니다.

 

class TestFragment: BaseFragment<FragmentTestBinding>(R.layout.fragment_test) {

    override fun initView() {
        super.initView()
        binding.apply {
            // TODO.
        }
    }

}

 

실행시 아래와 같은 화면을 보실수 있습니다.

 

 

상세한 소스 코드는 아래 GitHub 링크를 확인해 주세요.

 

GitHub - rcbuilders/RemindSampleApp: https://heeeju4lov.tistory.com/ 블로그에서 Android + Kotlin 강좌에서 사용함.

https://heeeju4lov.tistory.com/ 블로그에서 Android + Kotlin 강좌에서 사용함. - GitHub - rcbuilders/RemindSampleApp: https://heeeju4lov.tistory.com/ 블로그에서 Android + Kotlin 강좌에서 사용함.

github.com

 

 

 

반응형