Untitled
Ini bagian fragmentnya, karena disini saya menggunakan navigationunknown
kotlin
4 years ago
2.9 kB
19
Indexable
package com.example.githubuser.ui
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.githubuser.adapter.ListUserAdapter
import com.example.githubuser.databinding.FragmentHomeBinding
import com.example.githubuser.model.UserItemResponse
import com.example.githubuser.viewmodels.UserViewModel
class HomeFragment : Fragment() {
private var _binding: FragmentHomeBinding? = null
private val binding get() = _binding!!
private val userViewModel: UserViewModel by activityViewModels()
private val userList = arrayListOf<UserItemResponse>()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentHomeBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val layoutManager = LinearLayoutManager(activity)
binding.recyclerview.layoutManager = layoutManager
val itemDecoration = DividerItemDecoration(activity, layoutManager.orientation)
binding.recyclerview.addItemDecoration(itemDecoration)
userViewModel.listResponse.observe(viewLifecycleOwner) { setListResponse(it) }
userViewModel.isLoading.observe(viewLifecycleOwner) { showLoading(it) }
}
private fun setListResponse(listResponse: List<UserItemResponse>) {
for (position in listResponse.indices) {
userViewModel.getDetailResponse(listResponse[position].login)
}
userViewModel.detailResponse.observe(viewLifecycleOwner) { setDetailResponse(it) }
}
private fun setDetailResponse(detailResponse: UserItemResponse) {
userList.add(
UserItemResponse(
detailResponse.followers,
detailResponse.avatarUrl,
detailResponse.following,
detailResponse.name,
detailResponse.company,
detailResponse.location,
detailResponse.id,
detailResponse.publicRepos,
detailResponse.login,
detailResponse.email
)
)
val adapter = ListUserAdapter(userList)
binding.recyclerview.adapter = adapter
}
private fun showLoading(isLoading: Boolean) {
binding.progressBar.visibility = if (isLoading) View.VISIBLE else View.GONE
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}Editor is loading...