Skip to content

Commit

Permalink
[maro/#38] feat :: 좋아요 표시 유저 구분
Browse files Browse the repository at this point in the history
  • Loading branch information
leesumin0526 committed Jun 5, 2024
1 parent cd921e3 commit 5b5844c
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 49 deletions.
27 changes: 17 additions & 10 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion UMC_6th/app/src/main/java/com/example/umc_6th/Album.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ data class Album(
var id: Int = 0,
var title: String? = "",
var singer: String? = "",
var coverImg: Int? = null
var coverImg: Int? = null,
var isLike : Boolean = true,
)
28 changes: 2 additions & 26 deletions UMC_6th/app/src/main/java/com/example/umc_6th/AlbumFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ class AlbumFragment : Fragment() {
): View? {
binding = inflate(inflater,container,false)

val albumJson = arguments?.getString("album")
val album = gson.fromJson(albumJson, Album::class.java)
val albumToJson = arguments?.getString("album")
val album = gson.fromJson(albumToJson, Album::class.java)
isLiked = isLikedAlbum(album.id)
setInit(album)
setOnClickListener(album)
Expand All @@ -54,30 +54,6 @@ class AlbumFragment : Fragment() {
tab.text = information[position]
}.attach()


// binding.songLalacLayout.setOnClickListener{
// Toast.makeText(activity,"LILAC",Toast.LENGTH_SHORT).show()
// }
//
// binding.songFluLayout.setOnClickListener {
// Toast.makeText(activity,"FLU", Toast.LENGTH_SHORT).show()
// }
//
// binding.songCoinLayout.setOnClickListener {
// Toast.makeText(activity,"Coin", Toast.LENGTH_SHORT).show()
// }
//
// binding.songSpringLayout.setOnClickListener {
// Toast.makeText(activity,"봄 안녕 봄", Toast.LENGTH_SHORT).show()
// }
//
// binding.songCelebrityLayout.setOnClickListener {
// Toast.makeText(activity,"Celebrity", Toast.LENGTH_SHORT).show()
// }
//
// binding.songSingLayout.setOnClickListener {
// Toast.makeText(activity,"돌림노래 (Feat. DEAN)", Toast.LENGTH_SHORT).show()
// }
return binding.root
}
private fun setInit(album: Album){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import com.google.android.material.tabs.TabLayoutMediator
class LockerFragment : Fragment() {

lateinit var binding: FragmentLockerBinding
private var information = arrayListOf("저장한곡", "음악파일", "저장앨범")
private val information = arrayListOf("저장한곡", "음악파일", "저장앨범")
val bottomSheetFragment = BottomSheetFragment()


Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,61 @@
package com.example.myfirstapp

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.umc_6th.SavedAlbumRVAdapter
import com.example.umc_6th.SongDatabase
import com.example.umc_6th.databinding.FragmentSavedAlbumBinding

class SavedAlbumFragment : Fragment(){

class SavedAlbumFragment : Fragment() {
lateinit var binding: FragmentSavedAlbumBinding
lateinit var albumDB: SongDatabase
private lateinit var albumRVAdapter: SavedAlbumRVAdapter

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentSavedAlbumBinding.inflate(inflater,container,false)
binding = FragmentSavedAlbumBinding.inflate(inflater, container, false)

albumDB = SongDatabase.getInstance(requireContext())!!

return binding.root
}

override fun onStart() {
super.onStart()
initRecyclerview()
}

private fun initRecyclerview(){
binding.lockerSavedSongRecyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)

val albumRVAdapter = SavedAlbumRVAdapter()
//리스너 객체 생성 및 전달

albumRVAdapter.setMyItemClickListener(object : SavedAlbumRVAdapter.MyItemClickListener{
override fun onRemoveSong(songId: Int) {
albumDB.albumDao().getLikedAlbums(getJwt())
}
})

binding.lockerSavedSongRecyclerView.adapter = albumRVAdapter

albumRVAdapter.addAlbums(albumDB.albumDao().getLikedAlbums(getJwt()) as ArrayList)
}

private fun getJwt() : Int {
val spf = activity?.getSharedPreferences("auth" , AppCompatActivity.MODE_PRIVATE)
val jwt = spf!!.getInt("jwt", 0)
Log.d("MAIN_ACT/GET_JWT", "jwt_token: $jwt")

return jwt
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.example.umc_6th

import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.umc_6th.databinding.ItemLockerAlbumBinding

class SavedAlbumRVAdapter (): RecyclerView.Adapter<SavedAlbumRVAdapter.ViewHolder>() {
private val albums = ArrayList<Album>()

interface MyItemClickListener{
fun onRemoveSong(songId: Int)
}

private lateinit var mItemClickListener: MyItemClickListener

fun setMyItemClickListener(itemClickListener: MyItemClickListener){
mItemClickListener = itemClickListener
}

override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): SavedAlbumRVAdapter.ViewHolder {
val binding: ItemLockerAlbumBinding = ItemLockerAlbumBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false)

return ViewHolder(binding)
}

override fun onBindViewHolder(holder: SavedAlbumRVAdapter.ViewHolder, position: Int) {
holder.bind(albums[position])
holder.binding.itemLockerAlbumMoreIv.setOnClickListener {
mItemClickListener.onRemoveSong(albums[position].id)
removeSong(position)
}
}

override fun getItemCount(): Int = albums.size

@SuppressLint("NotifyDataSetChanged")
fun addAlbums(albums: ArrayList<Album>) {
this.albums.clear()
this.albums.addAll(albums)

notifyDataSetChanged()
}

fun removeSong(position: Int){
albums.removeAt(position)
notifyDataSetChanged()
}

inner class ViewHolder(val binding: ItemLockerAlbumBinding) : RecyclerView.ViewHolder(binding.root){
fun bind(album: Album){
binding.itemLockerAlbumCoverImgIv.setImageResource(album.coverImg!!)
binding.itemLockerAlbumTitleTv.text = album.title
binding.itemLockerAlbumSingerTv.text = album.singer
}
}

}
2 changes: 1 addition & 1 deletion UMC_6th/app/src/main/res/layout/fragment_locker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

<com.google.android.material.tabs.TabLayout
android:id="@+id/locker_content_tb"
android:layout_width="250dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:tabSelectedTextColor="#3f3fff"
Expand Down
18 changes: 11 additions & 7 deletions UMC_6th/app/src/main/res/layout/fragment_saved_album.xml
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SavedAlbumFragment">
android:layout_height="match_parent">

<!-- TODO: Update blank fragment layout -->
<TextView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/locker_savedSong_recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
tools:listitem="@layout/item_locker_album"
android:overScrollMode="never"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>

</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 5b5844c

Please sign in to comment.