MVC 패턴으로 게시판 기능 제작하기
navigation, fragment, Room, Recyclerview 사용
먼저 개발에 들어가기 전 MVC 아키텍처에 대해
Model, View, controller 의 약자로
MVVM, MVP와 비슷한 아키텍처 종류
model : 데이터, 데이터 처리
View : Activity, Fragment 등 UI
Controller : 비지니스 로직, 이벤트 처리
- 안드로이드에서는 Acticity, Fragment에 포함
이제 본격적으로 개발에 들어가기 위해 프래그먼트 3개를 생성해 주었다.
Activity에 NavHostFragment를 올리고 Navigation을 사용해 각 프래그먼트롤 교체
navigation docs
https://developer.android.com/guide/navigation/navigation-getting-started
view binding docs
https://developer.android.com/topic/libraries/view-binding
mainFragment
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.findNavController
import com.example.android_studt_first.databinding.FragmentMainBinding
class MainFragment : Fragment() {
private var _binding:FragmentMainBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
_binding = FragmentMainBinding.inflate(inflater,container,false)
_binding!!.btnGoDetail.setOnClickListener{
view -> view.findNavController().navigate(R.id.detailFragment)
}
_binding!!.btnGoInsert.setOnClickListener{
view -> view.findNavController().navigate(R.id.insertFragment)
}
return(binding.root)
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}
mainFragment에서 상세페이지 버튼 클릭 시 : InsertFragment
mainFragment에서 + 버튼 클릭 시 : DetailFragment
InsertFragment에서 작성완료 버튼 클릭 시 : mainFragment
DetailFragment에서 삭제하기 버튼 클릭 시 : mainFragment
게시판에서 페이지간 네비게이션 작성 완료