diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8bfe6b0d..5ed45370 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -21,7 +21,10 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.CoLink" - tools:targetApi="31" > + tools:targetApi="31"> + @@ -54,7 +57,7 @@ + android:label="@string/app_name"> diff --git a/app/src/main/java/com/seven/colink/ui/mypage/MyPageFragment.kt b/app/src/main/java/com/seven/colink/ui/mypage/MyPageFragment.kt index 77e1c482..138ae99f 100644 --- a/app/src/main/java/com/seven/colink/ui/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/seven/colink/ui/mypage/MyPageFragment.kt @@ -58,7 +58,7 @@ class MyPageFragment : Fragment() { privacypolicy() SkilRecyclerView() PostRecyclerView() - settingClick() + //settingClick() setLogout() //스킬 추가 @@ -76,7 +76,7 @@ class MyPageFragment : Fragment() { } //스킬 삭제 skiladapter.skilLongClick = object : MyPageSkilAdapter.SkilLongClick{ - override fun onLongClick(language: String, position: Int) { + override fun onLongClick(language: Any, position: Int) { val ad = AlertDialog.Builder(context) ad.setTitle("삭제") ad.setMessage("정말로 삭제하시겠습니까?") @@ -91,6 +91,7 @@ class MyPageFragment : Fragment() { } + //파이어베이스 유저 정보 연결 & 스킬 연결 viewModel.userDetails.observe(viewLifecycleOwner) { userDetails -> if (userDetails!= null) { // Update UI with user details @@ -109,6 +110,7 @@ class MyPageFragment : Fragment() { Log.d("Tag", "${userDetails.skill}") } + //파이어베이스 유저 등록글 viewModel.userPost.observe(viewLifecycleOwner) { it -> it?.map{post -> if (post.grouptype == GroupType.PROJECT){ @@ -128,6 +130,8 @@ class MyPageFragment : Fragment() { return binding.root } + + private fun updateUI(user: MyPageUserModel) { // Update your views with user information binding.tvMypageName.text = user.name @@ -142,6 +146,9 @@ class MyPageFragment : Fragment() { } binding.tvMypageAboutMe.text = user.info + val uri = Uri.parse(user.profile.toString()) + binding.ivMypageProfile.setImageURI(uri) + val level = user.level val levelicon: Drawable = DrawableCompat.wrap(binding.ivMypageLevel.drawable) if (level == 1){ @@ -204,20 +211,22 @@ class MyPageFragment : Fragment() { } } - private fun settingClick(){ - binding.ivMypageSetting.setOnClickListener { - val myPageEditDetailFragment = LayoutInflater.from(context).inflate(R.layout.fragment_my_page_edit_detail, null) - val myBuilder = AlertDialog.Builder(context) - .setView(myPageEditDetailFragment) - val mAlertDialog = myBuilder.show() - val mypageBackButton = myPageEditDetailFragment.findViewById(R.id.iv_mypage_detail_back) - mypageBackButton.setOnClickListener { - mAlertDialog.dismiss() - } - } - } +// private fun settingClick(){ +// binding.ivMypageSetting.setOnClickListener { +// val myPageEditDetailFragment = LayoutInflater.from(context).inflate(R.layout.fragment_my_page_edit_detail, null) +// val myBuilder = AlertDialog.Builder(context) +// .setView(myPageEditDetailFragment) +// val mAlertDialog = myBuilder.show() +// +// val mypageBackButton = myPageEditDetailFragment.findViewById(R.id.iv_mypage_detail_back) +// +// mypageBackButton.setOnClickListener { +// mAlertDialog.dismiss() +// } +// } +// } diff --git a/app/src/main/java/com/seven/colink/ui/mypage/MyPageSkilItemManager.kt b/app/src/main/java/com/seven/colink/ui/mypage/MyPageSkilItemManager.kt index dc26cf0b..d5ff6fd5 100644 --- a/app/src/main/java/com/seven/colink/ui/mypage/MyPageSkilItemManager.kt +++ b/app/src/main/java/com/seven/colink/ui/mypage/MyPageSkilItemManager.kt @@ -142,123 +142,6 @@ object MyPageSkilItemManager { } } - fun addItem2(language: String){ - var icon = R.drawable.ic_kotlin - when(language){ - "Adobe Photoshop" -> { - icon = R.drawable.ic_ps - } - "Adobe Illustrator" ->{ - icon = R.drawable.ic_ai - } - "Adobe XD" ->{ - icon = R.drawable.ic_xd - } - "Bash" ->{ - icon = R.drawable.ic_bash - } - "Blender" ->{ - icon = R.drawable.ic_blender - } - "C" ->{ - icon = R.drawable.ic_c - } - "C#" ->{ - icon = R.drawable.ic_csharp - } - "C++" ->{ - icon = R.drawable.ic_cplus - } - "CorelDRAW" ->{ - icon = R.drawable.ic_coreldraw - } - "Figma" ->{ - icon = R.drawable.ic_figma - } - "Go" ->{ - icon = R.drawable.ic_go - } - "Groovy" ->{ - icon = R.drawable.ic_groovy - } - "HTML" ->{ - icon = R.drawable.ic_html - } - "Java" ->{ - icon = R.drawable.ic_java - } - "JavaScript" ->{ - icon = R.drawable.ic_javascript - } - "Kubernetes" ->{ - icon = R.drawable.ic_kubernetes - } - "Lua" ->{ - icon = R.drawable.ic_lua - } - "MATLAB" ->{ - icon = R.drawable.ic_matlab - } - "Maya" ->{ - icon = R.drawable.ic_maya - } - "Objective-C" ->{ - icon = R.drawable.ic_objectivec - } - "PHP" ->{ - icon = R.drawable.ic_php - } - "PowerShell" ->{ - icon = R.drawable.ic_powershell - } - "Python" ->{ - icon = R.drawable.ic_python - } - "R" ->{ - icon = R.drawable.ic_r - } - "Ruby" ->{ - icon = R.drawable.ic_ruby - } - "Rust" ->{ - icon = R.drawable.ic_rust - } - "SAS" ->{ - icon = R.drawable.ic_sas - } - "Shell" ->{ - icon = R.drawable.ic_shell - } - "Sketch" ->{ - icon = R.drawable.ic_sketch - } - "SQL" ->{ - icon = R.drawable.ic_sql - } - "Substance Designer/Painter" ->{ - icon = R.drawable.ic_substance - } - "Swift" ->{ - icon = R.drawable.ic_swift - } - "TypeScript" ->{ - icon = R.drawable.ic_ts - } - "Dart" ->{ - icon = R.drawable.ic_dart - } - "VBA" ->{ - icon = R.drawable.ic_vba - } - "기타(etc)" ->{ - icon = R.drawable.ic_etc - } - } - skilMyPageItem = skilMyPageItem + MyPageItem.skilItems(skilMyPageItem.size+1,language,icon) - } - fun removeItem(language: String){ - skilMyPageItem = skilMyPageItem.filter { it.language != language } - } } \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/mypage/MyPageViewModel.kt b/app/src/main/java/com/seven/colink/ui/mypage/MyPageViewModel.kt index f85216fe..1e0d6995 100644 --- a/app/src/main/java/com/seven/colink/ui/mypage/MyPageViewModel.kt +++ b/app/src/main/java/com/seven/colink/ui/mypage/MyPageViewModel.kt @@ -1,7 +1,6 @@ package com.seven.colink.ui.mypage import android.util.Log -import android.widget.Toast import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -71,13 +70,14 @@ class MyPageViewModel @Inject constructor( } } - fun removeSkill(skill: String){ + fun removeSkill(skill: Any){ viewModelScope.launch { val currentUser = authRepository.getCurrentUser().message val userDetailsResult = userRepository.getUserDetails(currentUser) userDetailsResult.onSuccess { user -> val updatedSkills = user?.skill?.filter { it != skill } + Log.d("Tag", "updateSkills = ${updatedSkills}") val updatedUser = user?.copy(skill = updatedSkills) updatedUser?.let { userRepository.registerUser(it) diff --git a/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPagePostAdapter.kt b/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPagePostAdapter.kt index 2417126d..ac4196d8 100644 --- a/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPagePostAdapter.kt +++ b/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPagePostAdapter.kt @@ -52,7 +52,7 @@ class MyPagePostAdapter(var mItems: List) : RecyclerView.Adapter{ (holder as StudyViewHolder).holderStudying.text = item.studying if (holder.holderStudying.text == "참여중"){ - holder.holderStudying.setBackgroundResource(R.drawable.bg_mypage_ing_study) + holder.holderStudying.setBackgroundResource(R.drawable.bg_mypage_ing_blue) } holder.studyname.text = item.studyName holder.studytime.text = item.studyTime diff --git a/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPageSkilAdapter.kt b/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPageSkilAdapter.kt index 1fb86e60..7c5ba7ed 100644 --- a/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPageSkilAdapter.kt +++ b/app/src/main/java/com/seven/colink/ui/mypage/adapter/MyPageSkilAdapter.kt @@ -4,14 +4,9 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder -import com.seven.colink.databinding.ItemSignUpSkillBinding import com.seven.colink.databinding.MypageRecyclerviewItemSkilitemBinding import com.seven.colink.ui.mypage.MyPageItem import com.seven.colink.ui.mypage.MyPageSkilItemManager -import com.seven.colink.ui.mypage.MyPostItem -import com.seven.colink.ui.sign.signup.adater.SignUpProfileAdapter -import com.seven.colink.ui.sign.signup.type.SignUpProfileViewType -import okhttp3.internal.notify class MyPageSkilAdapter(var mItems: List): RecyclerView.Adapter() { @@ -21,7 +16,7 @@ class MyPageSkilAdapter(var mItems: List): RecyclerView.Adapter): RecyclerView.Adapter + updateUI(userDetails) + adapter.changeDataset(userDetails.userSkill?.map { UserSkillItem(it,UserSkillItemManager.addItem(it)) }?: emptyList()) + } + + viewModel.userDetailPost.observe(this@UserDetailActivity) { it -> + it?.map{post -> + if (post.grouptype == GroupType.PROJECT){ + UserPostItem.UserDetailPostItem(if (post.ing != ProjectStatus.END){ + "참여중" + } else "완료", userprojectName = post.title.toString(), userprojectTime = post.time.toString()) + } else { + UserPostItem.UserDetailStudyItem(if(post.ing != ProjectStatus.END){ + "참여중" + } else "완료", post.title.toString(), post.time.toString() + ) + + }}?.let { it1 -> postadapter.changeDataset(it1) } + Log.e("Tag","${it}") + } + } + + private fun updateUI(user: UserDetailModel){ + val userLink = user.userLink + if (userLink?.isNotEmpty() == true){ + binding.ivUserdetailLink.visibility = View.VISIBLE + binding.ivUserdetailLink.setOnClickListener { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(userLink)) + startActivity(intent) + } + } else { + binding.ivUserdetailLink.visibility = View.GONE + } + + binding.btnUserdetailChat.setOnClickListener { + //1:1 채팅 + } + + binding.btnUserdetailGroup.setOnClickListener { + //그룹으로 초대하기 + } + + binding.tvUserdetailName.text = user.userName + binding.tvUserdetailAboutMe.text = user.userInfo + binding.tvUserdetailSpecialization.text = user.userMainSpecialty + binding.tvUserdetailScore.text = user.userscore.toString() + binding.ivUserdetailBlog.setOnClickListener { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(user.userBlog)) + startActivity(intent) + } + binding.ivUserdetailGit.setOnClickListener { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(user.userGit)) + startActivity(intent) + } + val uri = Uri.parse(user.userProfile.toString()) + binding.ivUserdetailProfile.setImageURI(uri) + + val level = user.userLevel + val levelicon: Drawable = DrawableCompat.wrap(binding.ivUserdetailLevel.drawable) + if (level == 1){ + binding.tvUserdetailLevel.text = "1" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level1) + ) + } else if(level == 2){ + binding.tvUserdetailLevel.text ="2" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level1) + ) + } else if(level == 3){ + binding.tvUserdetailLevel.text ="3" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level3) + ) + } else if(level == 4){ + binding.tvUserdetailLevel.text ="4" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level4) + ) + } else if(level == 5){ + binding.tvUserdetailLevel.text ="5" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level5) + ) + } else if(level == 6){ + binding.tvUserdetailLevel.text ="6" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level6) + ) + } else { + binding.tvUserdetailLevel.text ="7" + DrawableCompat.setTint( + levelicon.mutate(), + ContextCompat.getColor(this,R.color.level7) + ) + } + Log.d("Tag","user = ${user}") + } + + private fun userSkill(){ + adapter = UserSkillAdapter(UserSkillItemManager.getItem()) + binding.reUserdetailItem.adapter = adapter + binding.reUserdetailItem.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false) + } + + private fun PostRecyclerView(){ + postadapter = UserDetailPostAdapter(UserDetailPostItemManager.getItemAll()) + binding.reUserdetailProject.adapter = postadapter + binding.reUserdetailProject.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailFragment.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailFragment.kt deleted file mode 100644 index f7a72ad8..00000000 --- a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailFragment.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.seven.colink.ui.userdetail - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.core.content.ContextCompat -import androidx.core.graphics.drawable.DrawableCompat -import androidx.fragment.app.viewModels -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager -import com.seven.colink.R -import com.seven.colink.databinding.FragmentUserDetailBinding -import com.seven.colink.ui.mypage.MyPageItem -import com.seven.colink.ui.mypage.MyPageSkilItemManager -import com.seven.colink.util.skillCategory - -class UserDetailFragment : Fragment() { - private lateinit var binding: FragmentUserDetailBinding - private lateinit var viewModel: UserDetailViewModel - private lateinit var adapter: UserSkillAdapter - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, ): View? { - - binding = FragmentUserDetailBinding.inflate(layoutInflater) - - - userSkill() - viewModel.userDetails.observe(viewLifecycleOwner) {userDetails -> - updateUI(userDetails) - adapter.changeDataset(userDetails.userSkill?.map { UserSkillItem(it,UserSkillItemManager.addItem(it)) }?: emptyList()) - } - - - return binding.root - } - - private fun updateUI(user: UserDetailModel){ - binding.tvUserdetailName.text = user.userName - binding.tvUserdetailAboutMe.text = user.userInfo - binding.tvUserdetailSpecialization.text = user.userMainSpecialty - binding.tvUserdetailScore.text = user.userscore.toString() - val level = user.userLevel - if (level == 1){ - binding.tvMypageLevel.text = "1" -// DrawableCompat.setTint( -// levelicon.mutate(), -// ContextCompat.getColor(requireContext(),R.color.level1) -// ) - } - } - - private fun userSkill(){ - adapter = UserSkillAdapter(UserSkillItemManager.getItem()) - binding.reUserdetailItem.adapter = adapter - binding.reUserdetailItem.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailModel.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailModel.kt index 97e1f27b..10805a22 100644 --- a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailModel.kt +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailModel.kt @@ -9,5 +9,6 @@ data class UserDetailModel ( val userBlog: String? = null, val userGit: String? = null, val userSkill: List? = emptyList(), - val userInfo: String? = null + val userInfo: String? = null, + val userLink: String? = null ) \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostItemManager.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostItemManager.kt new file mode 100644 index 00000000..ace2731b --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostItemManager.kt @@ -0,0 +1,15 @@ +package com.seven.colink.ui.userdetail + +import com.seven.colink.ui.mypage.MyPostItem + +object UserDetailPostItemManager { + private val PostItemList = listOf( + UserPostItem.UserDetailPostItem("참여중","코링","현재"), + UserPostItem.UserDetailPostItem("참여중","코링","현재"), + UserPostItem.UserDetailPostItem("참여중","코링","현재"), + UserPostItem.UserDetailPostItem("중도하차","코링","현재"), + UserPostItem.UserDetailPostItem("완료","코링","현재"), + UserPostItem.UserDetailStudyItem("참여중","MVVM 공부","현재"), + ) + fun getItemAll() : List = PostItemList +} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostModel.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostModel.kt new file mode 100644 index 00000000..1d558808 --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailPostModel.kt @@ -0,0 +1,12 @@ +package com.seven.colink.ui.userdetail + +import com.seven.colink.util.status.GroupType +import com.seven.colink.util.status.ProjectStatus + +data class UserDetailPostModel( + val key: String? = null, + val title: String? = null, + val ing: ProjectStatus? = null, + val grouptype: GroupType? = null, + val time: String? = null +) diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailViewModel.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailViewModel.kt index 4abc616c..ff758b92 100644 --- a/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailViewModel.kt +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserDetailViewModel.kt @@ -4,9 +4,12 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.seven.colink.domain.entity.PostEntity import com.seven.colink.domain.entity.UserEntity import com.seven.colink.domain.repository.AuthRepository +import com.seven.colink.domain.repository.PostRepository import com.seven.colink.domain.repository.UserRepository +import com.seven.colink.ui.mypage.MyPagePostModel import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch import javax.inject.Inject @@ -14,14 +17,18 @@ import javax.inject.Inject @HiltViewModel class UserDetailViewModel @Inject constructor( private val userRepository: UserRepository, - private val authRepository: AuthRepository + private val authRepository: AuthRepository, + private val postRepository: PostRepository ): ViewModel() { private val _userDetails = MutableLiveData() + private val _userDetailPosts = MutableLiveData>() val userDetails: LiveData = _userDetails + val userDetailPost: LiveData> = _userDetailPosts init { loadUserDetails() + loadUserPost() } private fun loadUserDetails(){ @@ -33,6 +40,15 @@ class UserDetailViewModel @Inject constructor( } } + private fun loadUserPost() { + viewModelScope.launch { + val result = postRepository.getPostByAuthId(authRepository.getCurrentUser().message) + result.onSuccess { post -> + _userDetailPosts.postValue(post.map { it.convertPostEntity() }) + } + } + } + private fun UserEntity.convertUserEntity() = UserDetailModel( userName = name, @@ -43,7 +59,16 @@ class UserDetailViewModel @Inject constructor( userGit = git, userSkill = skill, userInfo = info, - userscore = grade + userscore = grade, + userLink = link + ) + + private fun PostEntity.convertPostEntity() = UserDetailPostModel( + key = key, + title = title, + ing = status, + grouptype = groupType, + time = registeredDate ) } \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserPostAdapter.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostAdapter.kt new file mode 100644 index 00000000..7d7bf629 --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostAdapter.kt @@ -0,0 +1,4 @@ +package com.seven.colink.ui.userdetail + +class UserPostAdapter { +} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItem.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItem.kt new file mode 100644 index 00000000..a58fbcca --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItem.kt @@ -0,0 +1,7 @@ +package com.seven.colink.ui.userdetail + + +sealed class UserPostItem{ + data class UserDetailPostItem(val userprojecting: String, val userprojectName: String, val userprojectTime: String): UserPostItem() + data class UserDetailStudyItem(val userstudying: String, val userstudyName: String, val userstudyTime: String): UserPostItem() +} diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItemManager.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItemManager.kt new file mode 100644 index 00000000..b19ea8f4 --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserPostItemManager.kt @@ -0,0 +1,17 @@ +package com.seven.colink.ui.userdetail + +import com.seven.colink.ui.mypage.MyPostItem + +class UserPostItemManager { + private val UserPostItemList = listOf( + MyPostItem.MyPagePostItem("참여중","코링","현재"), + MyPostItem.MyPagePostItem("참여중","코링","현재"), + MyPostItem.MyPagePostItem("참여중","코링","현재"), + MyPostItem.MyPagePostItem("중도하차","코링","현재"), + MyPostItem.MyPagePostItem("완료","코링","현재"), + MyPostItem.MyPageStudyItem("참여중","MVVM 공부","현재"), + ) + + fun getItemAll() : List = UserPostItemList + +} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillItemManager.kt b/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillItemManager.kt index 574c3176..111bb746 100644 --- a/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillItemManager.kt +++ b/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillItemManager.kt @@ -10,7 +10,11 @@ object UserSkillItemManager { UserSkillItem("코틀린",R.drawable.ic_kotlin) ) - fun getItem(): List = skilUserItem + private val plusItems = listOf( + UserSkillItem("코틀린", R.drawable.ic_plus) + ) + + fun getItem(): List = skilUserItem + plusItems fun addItem(language: String) = when (language) { diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserDetailPostAdapter.kt b/app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserDetailPostAdapter.kt new file mode 100644 index 00000000..7285f94d --- /dev/null +++ b/app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserDetailPostAdapter.kt @@ -0,0 +1,85 @@ +package com.seven.colink.ui.userdetail.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.seven.colink.R +import com.seven.colink.databinding.MypageRecyclerviewItemPostBinding +import com.seven.colink.ui.userdetail.UserPostItem + +class UserDetailPostAdapter (var mItems: List) : RecyclerView.Adapter() { + + + companion object{ + private const val VIEW_TYPE_PROJECT = 1 + private const val VIEW_TYPE_STUDY = 2 + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { +// val binding = MypageRecyclerviewItemPostBinding.inflate(LayoutInflater.from(parent.context), parent, false) +// return postViewHolder(binding) + val inflater = LayoutInflater.from(parent.context) + return when(viewType){ + VIEW_TYPE_PROJECT -> { + val binding = MypageRecyclerviewItemPostBinding.inflate(LayoutInflater.from(parent.context),parent, false) + ProjectViewHolder(binding) + } else ->{ + val binding = MypageRecyclerviewItemPostBinding.inflate(LayoutInflater.from(parent.context),parent, false) + StudyViewHolder(binding) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when(val item = mItems[position]){ + is UserPostItem.UserDetailPostItem ->{ + (holder as ProjectViewHolder).holderProjecting.text = item.userprojecting + //여기서 if문으로 컬러 바꾸기 + if (holder.holderProjecting.text == "참여중"){ +// holder.holderProjecting.setBackgroundColor(Color.parseColor("#2DB7FF")) + holder.holderProjecting.setBackgroundResource(R.drawable.bg_mypage_ing_blue) + } else if(holder.holderProjecting.text == "중도하차"){ + holder.holderProjecting.setBackgroundResource(R.drawable.bg_mypage_ing_gray) + } else if(holder.holderProjecting.text =="완료"){ + holder.holderProjecting.setBackgroundResource(R.drawable.bg_mypage_ing_purple) + } + holder.projectname.text = item.userprojectName + holder.projecttime.text = item.userprojectTime + } + is UserPostItem.UserDetailStudyItem ->{ + (holder as StudyViewHolder).holderStudying.text = item.userstudying + if (holder.holderStudying.text == "참여중"){ + holder.holderStudying.setBackgroundResource(R.drawable.bg_mypage_ing_study) + } + holder.studyname.text = item.userstudyName + holder.studytime.text = item.userstudyTime + } + } + } + + fun changeDataset(newDataSet: List){ + mItems = newDataSet + notifyDataSetChanged() + } + + override fun getItemCount(): Int { + return mItems.size + } + + override fun getItemViewType(position: Int): Int { + return when(mItems[position]){ + is UserPostItem.UserDetailPostItem -> VIEW_TYPE_PROJECT + is UserPostItem.UserDetailStudyItem -> VIEW_TYPE_STUDY + } + } + + inner class ProjectViewHolder(val binding: MypageRecyclerviewItemPostBinding): RecyclerView.ViewHolder(binding.root){ + val holderProjecting = binding.tvMypagePostItemIngText + val projectname = binding.tvMypagePostItemProjectName + val projecttime = binding.tvMypagePostItemTime + } + inner class StudyViewHolder(val binding: MypageRecyclerviewItemPostBinding): RecyclerView.ViewHolder(binding.root){ + val holderStudying = binding.tvMypagePostItemIngText + val studyname = binding.tvMypagePostItemProjectName + val studytime = binding.tvMypagePostItemTime + } +} \ No newline at end of file diff --git a/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillAdapter.kt b/app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserSkillAdapter.kt similarity index 91% rename from app/src/main/java/com/seven/colink/ui/userdetail/UserSkillAdapter.kt rename to app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserSkillAdapter.kt index 4425d062..1580b889 100644 --- a/app/src/main/java/com/seven/colink/ui/userdetail/UserSkillAdapter.kt +++ b/app/src/main/java/com/seven/colink/ui/userdetail/adapter/UserSkillAdapter.kt @@ -1,10 +1,10 @@ -package com.seven.colink.ui.userdetail +package com.seven.colink.ui.userdetail.adapter import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.seven.colink.databinding.MypageRecyclerviewItemSkilitemBinding -import com.seven.colink.ui.mypage.MyPageItem +import com.seven.colink.ui.userdetail.UserSkillItem class UserSkillAdapter(var mItems: List): RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SkillViewHolder { diff --git a/app/src/main/res/drawable/bg_mypage_ing_blue.xml b/app/src/main/res/drawable/bg_mypage_ing_blue.xml index a9b27ce7..212c4bd9 100644 --- a/app/src/main/res/drawable/bg_mypage_ing_blue.xml +++ b/app/src/main/res/drawable/bg_mypage_ing_blue.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_git2.xml b/app/src/main/res/drawable/ic_git2.xml new file mode 100644 index 00000000..c97ad175 --- /dev/null +++ b/app/src/main/res/drawable/ic_git2.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml new file mode 100644 index 00000000..1eba2c30 --- /dev/null +++ b/app/src/main/res/drawable/ic_link.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/mypage_re_shape.xml b/app/src/main/res/drawable/mypage_re_shape.xml new file mode 100644 index 00000000..ca172548 --- /dev/null +++ b/app/src/main/res/drawable/mypage_re_shape.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_user_detail.xml b/app/src/main/res/layout/activity_user_detail.xml similarity index 91% rename from app/src/main/res/layout/fragment_user_detail.xml rename to app/src/main/res/layout/activity_user_detail.xml index c0c8c48e..0d88af71 100644 --- a/app/src/main/res/layout/fragment_user_detail.xml +++ b/app/src/main/res/layout/activity_user_detail.xml @@ -73,7 +73,8 @@ android:layout_marginStart="22dp" android:layout_marginTop="14dp" android:background="@drawable/userdetail_shape" - android:text="1:1 채팅" + android:text="그룹으로 초대" + android:textStyle="bold" android:textColor="@color/main_color" android:textSize="14sp" app:layout_constraintStart_toStartOf="parent" @@ -116,7 +117,7 @@ app:layout_constraintVertical_bias="0.9" /> + app:layout_constraintTop_toBottomOf="@+id/btn_userdetail_group" /> + app:layout_constraintTop_toBottomOf="@+id/btn_userdetail_group" /> + + - + + + + + + + + + @@ -273,6 +272,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14dp" + android:layout_marginTop="16dp" android:text="등록글" android:textColor="@color/main_color" android:textSize="14sp" @@ -298,7 +298,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" - android:layout_marginTop="49dp" + android:layout_marginTop="50dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/constraintLayout3"> diff --git a/app/src/main/res/layout/item_post_comment.xml b/app/src/main/res/layout/item_post_comment.xml new file mode 100644 index 00000000..331fa49b --- /dev/null +++ b/app/src/main/res/layout/item_post_comment.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_post_comment_send.xml b/app/src/main/res/layout/item_post_comment_send.xml new file mode 100644 index 00000000..6a1d6382 --- /dev/null +++ b/app/src/main/res/layout/item_post_comment_send.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_post_comment_title.xml b/app/src/main/res/layout/item_post_comment_title.xml new file mode 100644 index 00000000..31df7766 --- /dev/null +++ b/app/src/main/res/layout/item_post_comment_title.xml @@ -0,0 +1,34 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/mypage_recyclerview_item_post.xml b/app/src/main/res/layout/mypage_recyclerview_item_post.xml index 424f179a..7e168f17 100644 --- a/app/src/main/res/layout/mypage_recyclerview_item_post.xml +++ b/app/src/main/res/layout/mypage_recyclerview_item_post.xml @@ -14,7 +14,7 @@ android:background="@drawable/bg_mypage_ing_blue" android:gravity="center" android:text="참여중" - android:textColor="@color/white" + android:textColor="@color/forth_color" android:textSize="12sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" @@ -23,14 +23,16 @@ @@ -39,7 +41,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="14dp" - android:text="현재" + android:text="2024/03/06" android:textColor="@color/black" android:textSize="12sp" android:textStyle="bold"