From 8be2239e56b505911e97038179491bd35e88d7f0 Mon Sep 17 00:00:00 2001 From: easyhooon <51016231+easyhooon@users.noreply.github.com> Date: Sun, 20 Jun 2021 11:19:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=81=EB=8C=80=EB=B0=A9=EC=9D=98=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EB=B3=BC=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8A=94=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84,=20?= =?UTF-8?q?=EB=AA=A8=EC=A7=91=EA=B2=80=EC=83=89=20=ED=94=84=EB=9E=98?= =?UTF-8?q?=EA=B7=B8=EB=A8=BC=ED=8A=B8=20UI=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 7 +- .../konkuk/koogle/Activity/ArticleActivity.kt | 9 + .../koogle/Activity/CheckProfileActivity.kt | 184 ++++++++++++++++++ .../koogle/Activity/EditArticleActivity.kt | 1 - .../koogle/Activity/ProfileCommonActivity.kt | 15 +- .../konkuk/koogle/Adapter/CommunityAdapter.kt | 10 + .../konkuk/koogle/Fragment/GroupFragment.kt | 27 --- .../res/layout/activity_check_profile.xml | 182 +++++++++++++++++ .../main/res/layout/activity_edit_profile.xml | 9 +- app/src/main/res/layout/item_article.xml | 56 ++++-- app/src/main/res/values/colors.xml | 2 +- 11 files changed, 441 insertions(+), 61 deletions(-) create mode 100644 app/src/main/java/kr/ac/konkuk/koogle/Activity/CheckProfileActivity.kt create mode 100644 app/src/main/res/layout/activity_check_profile.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 12163e5..f5382d2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Koogle"> - + + @@ -60,10 +61,10 @@ android:value="@string/google_map" /> - - + + \ No newline at end of file diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Activity/ArticleActivity.kt b/app/src/main/java/kr/ac/konkuk/koogle/Activity/ArticleActivity.kt index e6a2c40..90e9787 100644 --- a/app/src/main/java/kr/ac/konkuk/koogle/Activity/ArticleActivity.kt +++ b/app/src/main/java/kr/ac/konkuk/koogle/Activity/ArticleActivity.kt @@ -263,6 +263,14 @@ class ArticleActivity : AppCompatActivity() { intent.putExtra(MAP_INFO, mapInfo) startActivity(intent) } + + //프로필을 누르면 상대방 프로필을 볼 수 있게 + binding.profileImageView.setOnClickListener { + val intent = Intent(this, CheckProfileActivity::class.java) + intent.putExtra(WRITER_INFO, writerId) + Log.i("ArticleActivity", "writerId: $writerId") + startActivity(intent) + } } private fun initDB() { @@ -414,5 +422,6 @@ class ArticleActivity : AppCompatActivity() { companion object { const val MAP_INFO = "MAP_INFO" const val ARTICLE_INFO = "ARTICLE_INFO" + const val WRITER_INFO = "WRITER_INFO" } } \ No newline at end of file diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Activity/CheckProfileActivity.kt b/app/src/main/java/kr/ac/konkuk/koogle/Activity/CheckProfileActivity.kt new file mode 100644 index 0000000..230c205 --- /dev/null +++ b/app/src/main/java/kr/ac/konkuk/koogle/Activity/CheckProfileActivity.kt @@ -0,0 +1,184 @@ +package kr.ac.konkuk.koogle.Activity + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.widget.EditText +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.ItemTouchHelper +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.google.firebase.database.DataSnapshot +import com.google.firebase.database.DatabaseError +import com.google.firebase.database.DatabaseReference +import com.google.firebase.database.ValueEventListener +import com.google.firebase.database.ktx.database +import com.google.firebase.ktx.Firebase +import kr.ac.konkuk.koogle.Adapter.CommentAdapter +import kr.ac.konkuk.koogle.Adapter.TagAdapter +import kr.ac.konkuk.koogle.DBKeys.Companion.DB_COMMENTS +import kr.ac.konkuk.koogle.DBKeys.Companion.DB_USERS +import kr.ac.konkuk.koogle.Model.CommentModel +import kr.ac.konkuk.koogle.Model.TagModel +import kr.ac.konkuk.koogle.Model.UserModel +import kr.ac.konkuk.koogle.R +import kr.ac.konkuk.koogle.databinding.ActivityCheckProfileBinding + +class CheckProfileActivity : ProfileCommonActivity() { + private val profileEditRequest = 1110 + + lateinit var binding: ActivityCheckProfileBinding + + lateinit var writerId: String + + private lateinit var commentAdapter: CommentAdapter + + private var userCommentList = mutableListOf() + + private val userRef: DatabaseReference by lazy { + Firebase.database.reference.child(DB_USERS) + } + + private val currentWriterRef: DatabaseReference by lazy { + userRef.child(writerId) + } + + private val currentWriterCommentRef: DatabaseReference by lazy { + currentWriterRef.child(DB_COMMENTS) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCheckProfileBinding.inflate(layoutInflater) + setContentView(binding.root) + init() + } + + private fun init() { + initDB() + initButton() + } + + private fun initButton() { + binding.apply { + checkButton.setOnClickListener { + finish() + } + } + + binding.backButton.setOnClickListener { + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + finish() + } + } + + + private fun initDB() { + //파이어베이스 데이터베이스의 정보 가져오기 + intent.let{ + writerId = it.getStringExtra(ArticleActivity.WRITER_INFO).toString() + Log.i("CheckProfileActivity", "writerId: $writerId") + } + + currentWriterRef.addListenerForSingleValueEvent(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + if (snapshot.exists()) { + val userModel: UserModel? = snapshot.getValue(UserModel::class.java) + if (userModel != null) { + Log.i("CheckProfileActivity", "userModel: $userModel ") + if (userModel.userProfileImageUrl.isEmpty()) { + binding.apply { + userProfileImage.setImageResource(R.drawable.profile_image) + } + } else { + Glide.with(binding.userProfileImage) + .load(userModel.userProfileImageUrl) + .into(binding.userProfileImage) + } + } + if (userModel != null) { + binding.writerNameText.text = userModel.userName + binding.userNameText.text = userModel.userName + } + } + } + + override fun onCancelled(error: DatabaseError) {} + }) + + currentWriterCommentRef.addListenerForSingleValueEvent(object: ValueEventListener{ + override fun onDataChange(dataSnapshot: DataSnapshot) { + for (snapshot in dataSnapshot.children) { + val commentModel = snapshot.getValue(CommentModel::class.java) + Log.i("CheckProfileActivity", "commentModel: $commentModel") + if (commentModel != null) { + userCommentList.add(commentModel) + } + + } + //동기적 실행을 위해 위치 옮김 + initCommentRecyclerView() + } + + override fun onCancelled(error: DatabaseError) { + + } + }) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + // 리사이클러뷰 갱신 + if(requestCode==profileEditRequest){ + initRecyclerView() + } + } + + private fun initCommentRecyclerView() { + binding.commentRecyclerView.layoutManager = LinearLayoutManager(this) + binding.commentRecyclerView.addItemDecoration(DividerItemDecoration(this, 1)) + commentAdapter = CommentAdapter() + binding.commentRecyclerView.adapter = commentAdapter + commentAdapter.submitList(userCommentList) + } + + override fun initTagRecyclerView(data: ArrayList) { + binding.tagRecyclerView.layoutManager = LinearLayoutManager(this) + // 구분선 넣기 + //binding.tagRecyclerView.addItemDecoration(DividerItemDecoration(this, 1)) + + tagAdapter = TagAdapter(this, data) + // 서브태그들 클릭했을 때 이벤트 구현 + tagAdapter.subTagClickListener = object : TagAdapter.OnItemClickListener { + override fun onItemClick( + holder: TagAdapter.DefaultViewHolder, + view: EditText, + data: TagModel, + position: Int + ) { + } + } + binding.tagRecyclerView.adapter = tagAdapter + val simpleCallBack = object : ItemTouchHelper.SimpleCallback( + ItemTouchHelper.DOWN or ItemTouchHelper.UP, + ItemTouchHelper.RIGHT + ) { + override fun onMove( + recyclerView: RecyclerView, + viewHolder: RecyclerView.ViewHolder, + target: RecyclerView.ViewHolder + ): Boolean { + tagAdapter.moveItem(viewHolder.adapterPosition, target.adapterPosition) + return true + } + + override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { + tagAdapter.removeItem(viewHolder.adapterPosition) + } + } + val itemTouchHelper = ItemTouchHelper(simpleCallBack) + itemTouchHelper.attachToRecyclerView(binding.tagRecyclerView) + } +} \ No newline at end of file diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Activity/EditArticleActivity.kt b/app/src/main/java/kr/ac/konkuk/koogle/Activity/EditArticleActivity.kt index 6c04019..4911d55 100644 --- a/app/src/main/java/kr/ac/konkuk/koogle/Activity/EditArticleActivity.kt +++ b/app/src/main/java/kr/ac/konkuk/koogle/Activity/EditArticleActivity.kt @@ -44,7 +44,6 @@ import kr.ac.konkuk.koogle.Model.ArticleModel import kr.ac.konkuk.koogle.Model.Entity.SearchResultEntity import kr.ac.konkuk.koogle.Model.UserModel import kr.ac.konkuk.koogle.databinding.ActivityEditArticleBinding -import java.io.File //기존 글의 데이터 읽어오기 class EditArticleActivity : AppCompatActivity() { diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Activity/ProfileCommonActivity.kt b/app/src/main/java/kr/ac/konkuk/koogle/Activity/ProfileCommonActivity.kt index dc361ae..bf263ef 100644 --- a/app/src/main/java/kr/ac/konkuk/koogle/Activity/ProfileCommonActivity.kt +++ b/app/src/main/java/kr/ac/konkuk/koogle/Activity/ProfileCommonActivity.kt @@ -24,6 +24,11 @@ import com.google.firebase.storage.FirebaseStorage import com.google.firebase.storage.StorageReference import kr.ac.konkuk.koogle.Adapter.TagAdapter import kr.ac.konkuk.koogle.DBKeys +import kr.ac.konkuk.koogle.DBKeys.Companion.DB_USER_TAG +import kr.ac.konkuk.koogle.DBKeys.Companion.SUB_TAGS +import kr.ac.konkuk.koogle.DBKeys.Companion.TAG_INDEX +import kr.ac.konkuk.koogle.DBKeys.Companion.TAG_TYPE +import kr.ac.konkuk.koogle.DBKeys.Companion.TAG_VALUE import kr.ac.konkuk.koogle.Model.TagModel /* @@ -60,20 +65,20 @@ abstract class ProfileCommonActivity: AppCompatActivity(){ // DB 에서 유저 태그 데이터 받아옴 val tagData: ArrayList = arrayListOf() userTagRef = Firebase.database.reference - .child(DBKeys.DB_USER_TAG).child(firebaseUser.uid) - userTagRef.orderByChild(DBKeys.TAG_INDEX) + .child(DB_USER_TAG).child(firebaseUser.uid) + userTagRef.orderByChild(TAG_INDEX) .limitToFirst(maxShowTag).addListenerForSingleValueEvent(object:ValueEventListener{ override fun onDataChange(snapshot: DataSnapshot) { for(s in snapshot.children){ val newSubTag = arrayListOf() - for(st in s.child(DBKeys.SUB_TAGS).children){ + for(st in s.child(SUB_TAGS).children){ newSubTag.add(st.key.toString()) } tagData.add( TagModel( s.key.toString(), newSubTag, - s.child(DBKeys.TAG_VALUE).value.toString().toInt(), - s.child(DBKeys.TAG_TYPE).value.toString().toInt() + s.child(TAG_VALUE).value.toString().toInt(), + s.child(TAG_TYPE).value.toString().toInt() )) } // 로딩 작업이 끝난 이후 RecyclerView 를 초기화하는 순서를 맞추기 위해 이곳에 넣음 diff --git a/app/src/main/java/kr/ac/konkuk/koogle/Adapter/CommunityAdapter.kt b/app/src/main/java/kr/ac/konkuk/koogle/Adapter/CommunityAdapter.kt index c352406..10d22d3 100644 --- a/app/src/main/java/kr/ac/konkuk/koogle/Adapter/CommunityAdapter.kt +++ b/app/src/main/java/kr/ac/konkuk/koogle/Adapter/CommunityAdapter.kt @@ -3,6 +3,7 @@ package kr.ac.konkuk.koogle.Adapter import android.annotation.SuppressLint import android.graphics.Color import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter @@ -44,6 +45,15 @@ class CommunityAdapter(val onItemClicked: (ArticleModel) -> Unit): ListAdapter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +