본문 바로가기
개발

TIL 코틀린 : sync project with gradle files, 클래스 순환 참조, RGB 투명도 주기

by kks950115 2024. 1. 16.
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
반응형

댓글