경험의 기록

2021.05.31 - [안드로이드/개발] - [Android 개발일지] MVVM 패턴으로 Todo, Done List 만들기 - (5) 데이터바인딩, 메모, 오류 수정

 

[Android 개발일지] MVVM 패턴으로 Todo, Done List 만들기 - (5) 데이터바인딩, 메모, 오류 수정

2021.05.27 - [안드로이드/개발] - [Android 개발일지] MVVM 패턴으로 Todo, Done List 만들기 - (4) 구조 수정, 캘린더 [Android 개발일지] MVVM 패턴으로 Todo, Done List 만들기 - (4) 구조 수정, 캘린더 2021...

hanyeop.tistory.com

 

에서 이어지는 글입니다.


1️⃣ DoneList

todolist를 만들때와 동일하게 만들면 된다.

 

Dao

// 완료한 메모만 출력
    @Query("SELECT * FROM Memo WHERE `check` = 1 ORDER BY year DESC, month DESC, day DESC, id DESC")
    fun readDoneData() : Flow<List<Memo>>

기존의 모든 데이터를 읽는 쿼리문과 유사하게 작성하면서,

WHERE로 조건을 체크되어 있는 것만 출력하도록 한다.

Repository

val readDoneData : Flow<List<Memo>> = memoDao.readDoneData()

ViewModel

val readDoneData : LiveData<List<Memo>>

추가해주고

 

 

DoneListFragment

class DoneListFragment : Fragment() {

    private var binding : FragmentDoneListBinding? = null
    private val memoViewModel: MemoViewModel by viewModels() // 뷰모델 연결
    private val adapter : TodoAdapter by lazy { TodoAdapter(memoViewModel) } // 어댑터 선언

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        // 뷰바인딩
        binding = FragmentDoneListBinding.inflate(inflater,container,false)

        // 아이템에 아이디를 설정해줌 (깜빡이는 현상방지)
        adapter.setHasStableIds(true)

        // 아이템을 가로로 하나씩 보여주고 어댑터 연결
        binding!!.doneRecyclerView.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false)
        binding!!.doneRecyclerView.adapter = adapter

        // 리스트 관찰하여 변경시 어댑터에 전달해줌
        memoViewModel.readDoneData.observe(viewLifecycleOwner, Observer {
            adapter.setData(it)
        })

        return binding!!.root
    }
}

readDoneData를 관찰하게하여 변경된 값을 어댑터에 넘겨주도록 한다.

 

 

기존의 Todolist화면에서

 

Donelist 화면을 선택하면 완료한 메모만 보여주는 것을 알 수 있다.

 

2️⃣ 마무리

 

서치바는 필요없다고 판단되어 제거하였다.

 

아이콘을 만들어주었다.

 


이제 전체적인 개발이 끝났으며 마지막으로 정리하는 시간을 가지려고 한다.

 

https://github.com/HanYeop/TodoneList

 

HanYeop/TodoneList

Todo-Done List . Contribute to HanYeop/TodoneList development by creating an account on GitHub.

github.com

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading