Skip to content

Commit

Permalink
feat : user 정보 viewpager2로 보여주기 #7
Browse files Browse the repository at this point in the history
  • Loading branch information
SeonHwan-Kim committed May 9, 2023
1 parent 1f34746 commit 784e26c
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
package org.android.go.sopt.presentation.main.gallery

import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import org.android.go.sopt.R
import org.android.go.sopt.data.remote.ServicePool
import org.android.go.sopt.data.remote.model.ResponseHomeUserDto
import org.android.go.sopt.databinding.FragmentGalleryBinding
import org.android.go.sopt.util.showShortToast
import retrofit2.Call
import retrofit2.Response

class GalleryFragment : Fragment() {
private var _binding: FragmentGalleryBinding? = null
private val binding: FragmentGalleryBinding
get() = requireNotNull(_binding) { "앗!_binding이 null이다!" }

private val homeUserService = ServicePool.getHomeUserService

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
Expand All @@ -25,13 +32,35 @@ class GalleryFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.pagerGallery.adapter = PagerAdapter().apply {
setItemList(listOf(R.drawable.img_jindo, R.drawable.img_beagle, R.drawable.img_golden_retriever))
}
this.getUserData()
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
}

private fun getUserData() {
homeUserService.GetHomeUserData().enqueue(object : retrofit2.Callback<ResponseHomeUserDto> {
override fun onResponse(
call: Call<ResponseHomeUserDto>,
response: Response<ResponseHomeUserDto>
) {
if (response.isSuccessful) {
Log.d("---------------\n", response.body()?.data.toString())
binding.pagerGallery.adapter = PagerAdapter().apply {
submitList(response.body()?.data)
}
requireActivity().showShortToast("성공")
} else {
Log.d("----------------------\n", response.message())
requireActivity().showShortToast("실패")
}
}

override fun onFailure(call: Call<ResponseHomeUserDto>, t: Throwable) {
Log.d("-----------------------\n", t.toString())
}
})
}
}
Original file line number Diff line number Diff line change
@@ -1,44 +1,55 @@
package org.android.go.sopt.presentation.main.gallery

import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import org.android.go.sopt.data.remote.model.ResponseHomeUserDto
import org.android.go.sopt.data.remote.service.HomeUserService
import org.android.go.sopt.databinding.ItemPagerBinding

class PagerAdapter(_itemList: List<Int> = listOf()) :
RecyclerView.Adapter<PagerAdapter.PagerViewHolder>() {
private var itemList: List<Int> = _itemList
class PagerAdapter() :
ListAdapter<ResponseHomeUserDto.UserData, PagerAdapter.PagerViewHolder>(PagerDiffCallBack()) {

class PagerViewHolder(private val binding: ItemPagerBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(src: Int) {
binding.ivPager.setImageResource(src)
fun bind(userData: ResponseHomeUserDto.UserData) {
with(binding){
Glide.with(root)
.load(userData.avatar)
.into(ivAvatar)
tvPagerEmail.text = "email : ${userData.email}"
tvPagerFirstName.text = "First Name : ${userData.first_name}"
tvPagerLastName.text = "Last Name : ${userData.last_name}"
}

}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PagerViewHolder {
val binding = ItemPagerBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return PagerViewHolder(binding)
}

override fun getItemCount() = itemList.size

override fun onBindViewHolder(holder: PagerViewHolder, position: Int) {
holder.bind(itemList[position])
holder.bind(getItem(position))
}
}

fun setItemList(itemList: List<Int>) {
this.itemList = itemList
notifyDataSetChanged()
class PagerDiffCallBack : DiffUtil.ItemCallback<ResponseHomeUserDto.UserData>() {
override fun areItemsTheSame(
oldItem: ResponseHomeUserDto.UserData,
newItem: ResponseHomeUserDto.UserData
): Boolean {
return oldItem == newItem
}
}

//class PagerDiffCallBack : DiffUtil.ItemCallback<List<Int>>() {
// override fun areItemsTheSame(oldItem: List<Int>, newItem: List<Int>): Boolean {
// return oldItem == newItem
// }
//
// override fun areContentsTheSame(oldItem: List<Int>, newItem: List<Int>): Boolean {
// return oldItem == newItem
// }
//}
override fun areContentsTheSame(
oldItem: ResponseHomeUserDto.UserData,
newItem: ResponseHomeUserDto.UserData
): Boolean {
return oldItem == newItem
}
}
40 changes: 38 additions & 2 deletions app/src/main/res/layout/item_pager.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
android:layout_height="match_parent">

<ImageView
android:id="@+id/iv_pager"
android:layout_width="200dp"
android:id="@+id/iv_avatar"
android:layout_width="150dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintDimensionRatio="1"
Expand All @@ -16,4 +16,40 @@
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/img_golden_retriever" />

<TextView
android:id="@+id/tv_pager_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="@id/iv_avatar"
app:layout_constraintStart_toStartOf="@id/iv_avatar"
app:layout_constraintTop_toBottomOf="@id/iv_avatar"
tools:text="email : [email protected]" />

<TextView
android:id="@+id/tv_pager_first_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="@id/tv_pager_email"
app:layout_constraintStart_toStartOf="@id/tv_pager_email"
app:layout_constraintTop_toBottomOf="@id/tv_pager_email"
tools:text="first name : asdf" />

<TextView
android:id="@+id/tv_pager_last_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="@id/tv_pager_first_name"
app:layout_constraintStart_toStartOf="@id/tv_pager_first_name"
app:layout_constraintTop_toBottomOf="@id/tv_pager_first_name"
tools:text="last name : asdf" />

</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 784e26c

Please sign in to comment.