개발
TIL 코틀린 : sync project with gradle files, 클래스 순환 참조, RGB 투명도 주기
kks950115
2024. 1. 16. 21:29
728x90
sync project with gradle files
git pull로 땡겨오면 sync project with gradle files 을 눌러주자....아니면 클린 프로젝트나.... 리빌드 프로젝트를....
방금 전까지 잘 되던게 git pull 하자마자 parcelable을 읽지못하더라.
gradle도 바뀐거 없는데 왜 안되지 했는데 그냥 싱크가 안맞아서 그런 것이였다.
클래스 순환 참조
클래스를 만드는데 아래와 같은 상황이 되었다.
@Parcelize
data class Group(
var groupImg : Int,
var groupName : String,
var groupDesc: String,
var members: ArrayList<Member>,
var posts : ArrayList<Post>
) : Parcelable
@Parcelize
data class Member(
var MemberImg : Int,
var Name : String,
var email: String,
var actCnt: Int,
var title : String,
var phoneNumber : String,
var joinedGroup:ArrayList<Group>
) : Parcelable
@Parcelize
data class Post(
var postImg : Int,
var postName : String,
var postContent: String,
var writer: String,
var views : Int
) : Parcelable
가입한 그룹과 가입된 회원을 확인하기 위해서 해당 객체를 리스트로 받은건데 서로 참조하는 모양새가 되어서 매우 머리가 아팠다. 특히나 더미데이터를 만드는데 모든 객체를 다 만들어넣어야해서 만들기도 어렵고, 코드의 양도 어마무시하게 많아졌다.
검색해보니 바람직하지 못한 형태라고 하여 수정했다.
@Parcelize
data class Member(
var memberId: String,
var MemberImg: Int,
var Name: String,
var email: String,
var actCnt: Int,
var title: String,
var myPhoneNumber: String,
var joinedGroupId: MutableList<String>
) : Parcelable
@Parcelize
data class MyContacts(
var name : String,
var email : String,
var img : Int
) : Parcelable
@Parcelize
data class MyJoinedGroup(
var name : String,
var img : Int
) : Parcelable
@Parcelize
data class Group(
val groupId: String,
var groupImg: Int,
var groupName: String,
var groupDesc: String,
var joinedMemberId: MutableList<String>,
var posts: MutableList<Post>
) : Parcelable
@Parcelize
data class Post(
val postId: String,
var postImg: Int,
var postName: String,
var postContent: String,
var writer: String,
var views: Int
) : Parcelable
id를 줌으로써 객체를 객체 안에 담는 것을 피했다. 다른 객체를 참조해야할 때는 로직 안에서 id로 검색하고 검색결과로 얻은 값을 활용할 계획이다. 처음엔 Int 타입이였지만 String 타입이 더 id에 적합하기 때문에 String 타입으로 하였다. hashcode+이름으로 하면 유일성을 보장할 수 있을 것이다만... 해당 과제는 그 정도로 커지진 않을 거 같다.
RGB 투명도 주기
#00ff0000
이런 식으로 주면 된다.
728x90
반응형