Skip to content

Commit

Permalink
상대방의 프로필 볼 수 있는 화면 구현, 모집검색 프래그먼트 UI 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
easyhooon committed Jun 20, 2021
1 parent 59c52af commit 8be2239
Show file tree
Hide file tree
Showing 11 changed files with 441 additions and 61 deletions.
7 changes: 4 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Koogle">
<activity android:name=".Activity.ContactActivity"></activity>
<activity android:name=".Activity.CheckProfileActivity"></activity>
<activity android:name=".Activity.ContactActivity" />
<activity android:name=".Activity.AddCommentActivity" />
<activity android:name=".Activity.ImageViewActivity" />
<activity android:name=".Activity.EditArticleActivity" />
Expand Down Expand Up @@ -60,10 +61,10 @@
android:value="@string/google_map" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.INTERNET" />

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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"
}
}
184 changes: 184 additions & 0 deletions app/src/main/java/kr/ac/konkuk/koogle/Activity/CheckProfileActivity.kt
Original file line number Diff line number Diff line change
@@ -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<CommentModel>()

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<TagModel>) {
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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

/*
Expand Down Expand Up @@ -60,20 +65,20 @@ abstract class ProfileCommonActivity: AppCompatActivity(){
// DB 에서 유저 태그 데이터 받아옴
val tagData: ArrayList<TagModel> = 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<String>()
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 를 초기화하는 순서를 맞추기 위해 이곳에 넣음
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/java/kr/ac/konkuk/koogle/Adapter/CommunityAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -44,6 +45,15 @@ class CommunityAdapter(val onItemClicked: (ArticleModel) -> Unit): ListAdapter<A
binding.slash.setTextColor(Color.RED)
binding.recruitmentNumberTextView.setTextColor(Color.RED)
}

if(articleModel.articleThumbnailImageUrl.isNotEmpty()){
Glide.with(binding.articleThumbnailImage)
.load(articleModel.articleThumbnailImageUrl)
.into(binding.articleThumbnailImage)
}
else{
binding.articleThumbnailImage.visibility = View.INVISIBLE
}
}
}

Expand Down
27 changes: 0 additions & 27 deletions app/src/main/java/kr/ac/konkuk/koogle/Fragment/GroupFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -140,33 +140,6 @@ class GroupFragment : Fragment(R.layout.fragment_group) {
}

private fun initDB() {
// scope.launch {
// binding?.progressBar?.visibility = View.VISIBLE
// CoroutineScope(Dispatchers.IO).async {
// currentUserGroupRef.addListenerForSingleValueEvent(object: ValueEventListener{
// override fun onDataChange(dataSnapshot: DataSnapshot) {
// for (snapshot in dataSnapshot.children){
// val groupModel = snapshot.getValue(GroupModel::class.java)
// Log.i("GroupFragment", "groupModel: $groupModel")
// if (groupModel != null) {
// userGroupList.add(groupModel.groupId)
// }
// }
// //동기적 실행을 위해 위치 옮김
// initRecyclerView()
// groupRef.addChildEventListener(listener)
//
// }
//
// override fun onCancelled(error: DatabaseError) {
//
// }
//
// })
// }.await()
// binding?.progressBar?.visibility = View.GONE
// }

currentUserGroupRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (snapshot in dataSnapshot.children) {
Expand Down

0 comments on commit 8be2239

Please sign in to comment.