-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Team04] Stitch&스타크 - 네트워크 통신 및 드래그 앤 드롭, 스와이프 구현 - 최종 PR #210
base: team-04
Are you sure you want to change the base?
Conversation
[Android] Stitch - 리사이클러 뷰 목록 팝업메뉴 연결, 메뉴 별 기능 구현
…e-#39 [Android] 스타크 - 레트로핏 카드 저장, 조희, 수정 기능 구현
[Android] stitch - drag&drop&swipe 기능 구현
[Android] Stitch&스타크 - 2주차 수요일 피드백
[Android] Stitch - 카드 모든 조회 네트워크 통신
[Android] 스타크 - 추가 수정 네트워크 통신 구현
[Android] Stitch - 모든 활동 로그기록(history) 네트워크 통신
[Android] Stitch - task 삭제 네트워크 통신
[Android] Stitch - Task 이동하기 네트워크 통신 기능 구현
…into feature/recyclerview-drag-drop-#42
[Android] Stitch - 드래그 앤 드롭
@renovatio0424 스타크와 스티치와 같이 진행했습니다. drag&drop&swipe, 네트워크 책임과 분리에 대해 따끔한 채찍 부탁드립니다. |
질문이런식으로 새로운 MutableList를 만든 후 MutableLiveData에 동기화 하는 방법으로 구현했을 때만 정상적으로 LiveData에 데이터가 추가되는 경험을 했습니다. 답변좋은 질문이네요 ㅎㅎ |
fun String.htmlToString() : String { | ||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { | ||
Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY).toString() | ||
} else { | ||
Html.fromHtml(this).toString() | ||
} | ||
fun String.htmlToSpanned() : Spanned { | ||
return HtmlCompat.fromHtml(this, FROM_HTML_MODE_LEGACY) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 버전 분기 코드를 개선했군요!
좋습니다~
xxxCompat
클래스들이 버전 분기 처리를 해주느니 기억해두면 좋겠네요~
val createData: String, | ||
val createDateTime: String, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네이밍 개선 좋습니다~
sealed class Result<out T : Any> { | ||
data class Success<out T : Any>(val data: T) : Result<T>() | ||
data class Error(val error: String) : Result<Nothing>() | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 sealed class
를 사용했네요 ??
sealed class
를 사용했던 이유가 무엇인가요?
import retrofit2.converter.gson.GsonConverterFactory | ||
|
||
object RetrofitAPI { | ||
private const val BASE_URL = "http://www.louie-03.com/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https
를 사용하지 않고 http
를 사용했던 이유가 무엇인가요?
import androidx.recyclerview.widget.RecyclerView | ||
import com.example.todolist.R | ||
|
||
class DragListener : View.OnDragListener { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DragListener
이름만 보았을땐 모든 DragEvent 를 핸들링해줄 수 있는 Listener 같네요
이렇게 네이밍과 실제 구현체의 동작이 다르면 혼동을 일으킬 수 있어요 ㅎㅎ
이럴땐 같이 작업하는 팀원들과 어떻게 하면 혼동이 되지 않을지 이야기해보면 좋겠네요 ㅎㅎ
import kotlin.math.max | ||
import kotlin.math.min | ||
|
||
class ItemTouchCallback(private var clamp: Float) : ItemTouchHelper.Callback() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DragListener와 마찬가지네요 ㅎㅎ
interface ItemTouchHelperListener { | ||
fun onItemMove(fromPosition: Int, toPosition: Int): Boolean | ||
|
||
fun onItemSwipe(position: Int) | ||
|
||
fun add(type: Int, index: Int, task: TaskDetailResponse) | ||
|
||
fun remove(index: Int, task: TaskDetailResponse) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
인터페이스 구현으로 미리 api 구조를 설계하는 게 좋네요 ㅎㅎ
미리 설계하고 만드는 것도 좋지만 만들어진 클래스들을의 공통 API 를 뽑아 인터페이스를 만들어보는것도 연습해보시면 도움이 많이 되실거에요 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
리뷰 확인해주세요~
구현 상황
팝업 메뉴를 리스트 아이템에 연결
서버와 네트워크 통신 구현
드래그 앤 드롭, 스와이프 구현
질문
위와 같이 직접 LiveData에 add를 시키는 경우 LiveData에 데이터가 추가되지 않고
이런식으로 새로운 MutableList를 만든 후 MutableLiveData에 동기화 하는 방법으로 구현했을 때만 정상적으로 LiveData에 데이터가 추가되는 경험을 했습니다.
해당 부분의 이유가 궁금합니다.
Screenshot
2022-04-15.3.33.59.mov