-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProfileActivity.kt
188 lines (164 loc) · 6.95 KB
/
ProfileActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
package kr.ac.konkuk.koogle.Activity
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
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.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
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.GroupModel
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.ActivityProfileBinding
/*
2021-05-27 주예진 수정
initData: 개발용 임시 데이터
initTagRecyclerView: 태그 리스트 출력
initRecommandRecyclerView: 타 유저의 추천(후기) 글 리스트
*/
class ProfileActivity : ProfileCommonActivity() {
private val profileEditRequest = 1110
// private var tag_debug_data: ArrayList<TagModel> = ArrayList()
lateinit var binding: ActivityProfileBinding
lateinit var commentAdapter: CommentAdapter
private var userCommentList = mutableListOf<CommentModel>()
private val userRef: DatabaseReference by lazy {
Firebase.database.reference.child(DB_USERS)
//val userRef = FirebaseDatabase.getInstance().getReference(DB_USERS).child(uid)와 같다
}
private val currentUserRef: DatabaseReference by lazy {
userRef.child(firebaseUser.uid)
}
private val currentUserCommentRef: DatabaseReference by lazy {
currentUserRef.child(DB_COMMENTS)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityProfileBinding.inflate(layoutInflater)
setContentView(binding.root)
init()
}
private fun init() {
initDB()
initButton()
}
private fun initButton() {
binding.accountInfoButton.setOnClickListener {
val intent = Intent(this, AccountInfoActivity::class.java)
startActivity(intent)
}
binding.profileEditButton.setOnClickListener {
val intent = Intent(this, EditProfileActivity::class.java)
startActivityForResult(intent, profileEditRequest)
}
binding.backButton.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
private fun initDB() {
//파이어베이스 데이터베이스의 정보 가져오기
currentUserRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if (snapshot.exists()) {
val userModel: UserModel? = snapshot.getValue(UserModel::class.java)
if (userModel != null) {
if (userModel.userProfileImageUrl.isEmpty()) {
binding.userProfileImage.setImageResource(R.drawable.profile_image)
} else {
Glide.with(binding.userProfileImage)
.load(userModel.userProfileImageUrl)
.into(binding.userProfileImage)
}
}
if (userModel != null) {
binding.userNameText.text = userModel.userName
}
}
}
override fun onCancelled(error: DatabaseError) {}
})
currentUserCommentRef.addListenerForSingleValueEvent(object: ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (snapshot in dataSnapshot.children) {
val commentModel = snapshot.getValue(CommentModel::class.java)
Log.i("ProfileActivity", "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.itemClickListener = object : TagAdapter.OnItemClickListener {
override fun onItemClick(
holder: TagAdapter.DefaultViewHolder,
view: View,
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)
}
}