One Day Android #1

최성훈·2022년 10월 7일
0

MVC 패턴으로 게시판 기능 제작하기
navigation, fragment, Room, Recyclerview 사용

MVC 아키텍처

먼저 개발에 들어가기 전 MVC 아키텍처에 대해

Model, View, controller 의 약자로
MVVM, MVP와 비슷한 아키텍처 종류

model : 데이터, 데이터 처리
View : Activity, Fragment 등 UI
Controller : 비지니스 로직, 이벤트 처리
	- 안드로이드에서는 Acticity, Fragment에 포함
  1. Controller가 사용자 이벤트를 감지 ex) onClickListener
  2. 데이터가 업데이트 되면 Model에게 데이터 update 요청
  3. Model은 데이터 update 후 view에게 알려줌
  4. View는 Model의 데이터 업데이트를 확인하고 가져온다.
  5. View가 UI를 업데이트 한다.

이제 본격적으로 개발에 들어가기 위해 프래그먼트 3개를 생성해 주었다.

  1. MainFragment : 게시판의 글 목록을 확인
  2. InsertFragment : 게시글 작성
  3. DetailFragment : 게시글 세부 내용 확인

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

게시판에서 페이지간 네비게이션 작성 완료

profile
모든 것이 궁금한 개발자

0개의 댓글