Open tictactoeid opened 4 years ago
단순 안 뜨는 이유는 너무 많을 것 같네요... 디비에 입력이 되지않는케이스도 있고, livedata fetch가 실패한 경우도 있고... 코드 전체를 푸쉬해서 공유해주셔야 문제점을 알 수 있을 것 같네요
ViewHolder 의 저 코드는 binding의 variable을 넘겨주는 용도입니다. 저걸 사용하는 건 xml에서 해당 데이터를 view와 연결하는 방식으로 사용해야 할 것 같습니다. 아이템이 보이지 않는 것과는 상관이 없을 것으로 예상되네요 (아이템의 titile content가 이상하게 표기되는 부분과 관련이 있는 코드입니다)
과제 제출하는 waffle-android-assign repository에 코드 업로드해두었습니다. 문제가 무엇인지는 저도 계속 찾아보겠습니다. 감사합니다.
코드 확인했습니다. 우선 의심되는 부분은
@BindingAdapter("items")
fun bindItems(view: RecyclerView, todo: List<Todo>) { // List<Todo>?
val adapter = view.adapter as? TodoListAdapter
adapter?.setItems(todo)
}
입니다 주석으로 의문을 표하셨듯이 todo는 LiveData<List<Todo>>
Type 의 value 가 인자로 들어오는데 얘는 타입이 List<Todo>?
입니다. 따라서 인자로 nullable 한 List<Todo>?
를 받아야 할 것 같네요
더 중요한 문제가 있네요... activity_main.xml 에서
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:adapter="@{adapter}"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:layout_editor_absoluteX="-26dp"
tools:layout_editor_absoluteY="16dp"
tools:listitem="@layout/item_todo" />
저희가 위에서 items BindingAdapter를 만들었고 얘가 사용되는 곳은, xml 에 viewModel 의 todos 랑 바인딩 하는 것입니다. 따라서 app:items=@{viewModel.allTodos}
를 추가해줘야 할 것 같네요
전반적으로 코드를 이해하고 작성하는 느낌이 부족한 것 같습니다 ㅠㅠ 이렇게 세미나 과제를 완료 해도 결국 이후의 과제나 프로젝트를 진행할 때는 꼭 코드를 적었다면 왜 적었는지 제대로 배우고 써야하기 때문에 확실히 Codelab 을 통해 복습하는 걸 권장드립니다
답변 감사합니다! 우선 질문한 부분은 해결되었습니다. 과제를 수행하는 것 자체는 어느 정도 한 것 같으니, 추석 이용해서 codelab으로 복습하고 과제를 다시 수행해 보는 것도 괜찮을 것 같습니다.
HW2 수행하던 중 질문이 있습니다. 현재 앱을 실행하여 todo 추가 버튼을 누르고, 제목과 내용을 입력한 뒤 create를 누르면 create라는 내용의 toast는 표시되지만, todo가 app 메인 화면에 표시되지 않습니다.
사실 제가 전반적으로 이해가 부족합니다. codelab 등을 보고 먼저 공부하는 것이 맞겠지만, 과제를 수행해야 다음 seminar에도 참여할 수 있으므로 우선 세미나 중 보여주신 코드와 예시 코드(roomexample의 memo 코드)를 참고하여 우선 TODO를 모두 완료하기는 했습니다만, 어디에 문제가 있어서 화면에 표시되지 않는지 모르겠습니다.
그나마 의심가는 부분은 TodoListAdapter.kt의
입니다. 의심하고 있는 이유는 private val viewModel을 skeleton code에서 선언하기는 하였지만 제가 사용하지 않았다는 점 때문입니다만, 사실 이게 원인이 맞는지, 어떻게 사용해야 하는지/사용할 필요가 없는지 등 감이 잡히지 않는 부분이 많아 우선 issue에 올려봅니다.