@@ -7,60 +7,73 @@ import android.view.View
77import android.view.ViewGroup
88import android.widget.ImageView
99import android.widget.LinearLayout
10+ import androidx.lifecycle.lifecycleScope
1011import com.experts.dada.databinding.FragmentDiaryMemo2Binding
12+ import kotlinx.coroutines.launch
1113
1214class DiaryMemo2Fragment : Fragment () {
1315 lateinit var binding: FragmentDiaryMemo2Binding
1416 private var selectedItemId: Int? = null // 선택된 이미지의 ID를 저장할 변수
17+ private lateinit var stampDao: StampDao
1518
1619 override fun onCreateView (
1720 inflater : LayoutInflater , container : ViewGroup ? ,
1821 savedInstanceState : Bundle ?
1922 ): View ? {
2023 binding = FragmentDiaryMemo2Binding .inflate(inflater, container,false )
2124
25+ // StampDao 초기화
26+ val diaryDatabase = DiaryDatabase .getDatabase(requireContext())
27+ stampDao = diaryDatabase.stampDao()
28+
2229 // 로딩된 데이터 적용
2330 binding.memo2Weight2Et.setText(AppData .diaryWeight)
2431 binding.memo2ContentEt.setText(AppData .diaryContent)
2532
26- // 이미지 배열을 생성합니다.
27- val imageResIds = ( 1 .. 27 ).map { resources.getIdentifier( " stamp $it " , " drawable " , context?.packageName) }
33+ // 구매된 스탬프를 불러와서 이미지 뷰를 동적으로 추가
34+ loadPurchasedStamps()
2835
29- // LinearLayout에 이미지 뷰들을 동적으로 추가합니다.
30- val linearLayout = binding.memo2StampHsv.getChildAt(0 ) as LinearLayout // LinearLayout을 참조
31- imageResIds.forEachIndexed { index, resId ->
32- val imageView = ImageView (requireContext())
33- imageView.setImageResource(resId)
36+ return binding.root
37+ }
3438
35- imageView.layoutParams = LinearLayout . LayoutParams ( 150 , 150 ). apply {
36- if (index != 0 ) marginStart = 20 // 여백 설정
37- }
39+ private fun loadPurchasedStamps () {
40+ lifecycleScope.launch {
41+ val purchasedStamps = stampDao.getAllPurchasedStamps()
3842
39- // 클릭 이벤트 처리
40- imageView.setOnClickListener {
41- // 기존에 선택된 이미지가 있다면, 배경을 투명으로 되돌림
42- selectedItemId?.let { id ->
43- val prevSelectedImage = linearLayout.getChildAt(id - 1 ) as ImageView
44- prevSelectedImage.setBackgroundColor(android.graphics.Color .TRANSPARENT ) // 배경을 투명으로
43+ // LinearLayout에 이미지 뷰들을 동적으로 추가합니다.
44+ val linearLayout = binding.memo2StampHsv.getChildAt(0 ) as LinearLayout // LinearLayout을 참조
45+ purchasedStamps.forEachIndexed { index, stamp ->
46+ val imageView = ImageView (requireContext())
47+ imageView.setImageResource(stamp.stampImg)
48+
49+ imageView.layoutParams = LinearLayout .LayoutParams (150 , 150 ).apply {
50+ if (index != 0 ) marginStart = 20 // 여백 설정
4551 }
4652
47- // 새로 클릭된 이미지의 ID를 저장하고, 배경을 회색으로 설정
48- selectedItemId = index + 1
49- imageView.setBackgroundColor(android.graphics.Color .LTGRAY ) // 배경을 회색으로 설정
53+ // 클릭 이벤트 처리
54+ imageView.setOnClickListener {
55+ // 기존에 선택된 이미지가 있다면, 배경을 투명으로 되돌림
56+ selectedItemId?.let { id ->
57+ val prevSelectedImage = linearLayout.getChildAt(id - 1 ) as ImageView
58+ prevSelectedImage.setBackgroundColor(android.graphics.Color .TRANSPARENT ) // 배경을 투명으로
59+ }
5060
51- // 선택된 스탬프 id 저장
52- AppData .diarySelectedItem = selectedItemId ? : 0
53- }
61+ // 새로 클릭된 이미지의 ID를 저장하고, 배경을 회색으로 설정
62+ selectedItemId = stamp.id.toInt() // Stamp의 ID를 사용
63+ imageView.setBackgroundColor(android.graphics. Color . LTGRAY ) // 배경을 회색으로 설정
5464
55- // 만약 현재 이미지가 선택된 스탬프라면 배경을 회색으로 설정
56- if (index + 1 == AppData .diarySelectedItem) {
57- imageView.setBackgroundColor(android.graphics.Color .LTGRAY )
58- selectedItemId = index + 1
59- }
65+ // 선택된 스탬프 id 저장
66+ AppData .diarySelectedItem = selectedItemId ? : 0
67+ }
6068
61- linearLayout.addView(imageView)
62- }
69+ // 만약 현재 이미지가 선택된 스탬프라면 배경을 회색으로 설정
70+ if (stamp.id.toInt() == AppData .diarySelectedItem) {
71+ imageView.setBackgroundColor(android.graphics.Color .LTGRAY )
72+ selectedItemId = stamp.id.toInt()
73+ }
6374
64- return binding.root
75+ linearLayout.addView(imageView)
76+ }
77+ }
6578 }
6679}
0 commit comments