Commit 6bb9881d by nick2905

Update Implementation

parent 07dd7cbe
......@@ -13,6 +13,10 @@ android {
versionCode 1
versionName "1.0"
dataBinding {
enabled = true
}
viewBinding {
enabled = true
}
......@@ -78,4 +82,10 @@ dependencies {
//justified text
implementation 'com.codesgood:justifiedtextview:1.1.0'
//retrofit + gson
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.okhttp3:logging-interceptor:4.4.1'
}
......@@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.proyek.akhir.kodel">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
......@@ -10,11 +12,71 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".ui.koperasi.beranda.pinjaman.confirmPeminjam.ConfirmasiPeminjamActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.pinjaman.PeminjamKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name="com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.history.HistoryKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.kupon.KuponKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.berita.BeritaKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.produk.ProdukKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.BerandaActivity"
android:label="@string/title_activity_beranda"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ui.user.dashboard.history.detailHistory.DetailHistoryActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.profil.changeProfil.EditProfilActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.produk.konfirmasi.KonfirmasiPembayaranActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.produk.pembayaran.PembayaranActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.dashboard.ajuanPinjaman.SuccessPinjamActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.dashboard.ajuanPinjaman.AjuanPinjamanActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.produk.detail.DetailProdukActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity android:name=".ui.user.dashboard.detailPenunggak.DetailPenunggakActivity" />
<activity
android:name=".ui.user.dashboard.history.HistoryActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.dashboard.success.SuccessActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.dashboard.tarikSaldo.TarikSaldoActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.dashboard.isiSaldo.IsiSaldoActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity android:name=".ui.user.produk.search.SearchProdukActivity" />
<activity
android:name=".ui.user.HomeActivity"
android:label="@string/title_activity_home"></activity>
android:label="@string/title_activity_home" />
<activity android:name=".MainActivity" />
<activity
android:name=".ui.LoginActivity"
android:name=".ui.auth.LoginActivity"
android:theme="@style/Theme.Design.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......
package com.proyek.akhir.kodel.data.local
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Berita(
var judulBerita: String,
var tglBerita: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.local
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class History(
var judul: String,
var desc: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.local
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Penunggak (
var imgPenunggak : Int,
var namePenunggak: String,
var hariPenunggak: String
): Parcelable
package com.proyek.akhir.kodel.data.local
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Produk(
var imgProduk: Int,
var namaProduk: String,
var hargaProduk: String,
var categoryProduk: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Anggota : ArrayList<AnggotaItem>()
@Parcelize
data class AnggotaItem(
val alamatAnggota: String,
val emailAnggota: String,
val fotoDiriAnggota: String,
val fotoKkAnggota: String,
val fotoKtpAnggota: String,
val idAnggota: Int,
val namaAnggota: String,
val noTelpAnggota: Long,
val penghasilanAnggota: Int,
val saldoAnggota: Int
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
class Berita : ArrayList<BeritaItem>()
data class BeritaItem(
val descBerita: Any,
val fileBerita: Any,
val idBerita: Int,
val judulBerita: String,
val tglBerita: String
)
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
class Produk : ArrayList<ProdukItem>()
data class ProdukItem(
val gambarProduk: String,
val hargaProduk: Int,
val idProduk: Int,
val namaProduk: String,
val satuanProduk: String
)
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Utang : ArrayList<UtangItem>()
@Parcelize
data class UtangItem(
val idAnggota: Int,
val isJatuhTempo: Boolean,
val isMenunggak: Boolean,
val jlhUtang: Int,
val tglPinjam: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.ui.auth
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.koperasi.BerandaActivity
import kotlinx.android.synthetic.main.app_bar_beranda.*
import kotlinx.android.synthetic.main.fragment_daftar.view.*
/**
* A simple [Fragment] subclass.
*/
class DaftarFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_daftar, container, false)
root.daftarButton.setOnClickListener {
startActivity(Intent(this.activity, BerandaActivity::class.java))
}
return root
}
}
package com.proyek.akhir.kodel.ui.auth
import android.content.res.ColorStateList
import android.graphics.Color
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.google.android.material.tabs.TabLayoutMediator.TabConfigurationStrategy
import com.proyek.akhir.kodel.R
import kotlinx.android.synthetic.main.activity_login.*
class LoginActivity : AppCompatActivity() {
private val titles = arrayOf("Masuk", "Daftar")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
tabLayoutLogin.tabGravity = TabLayout.GRAVITY_CENTER
tabLayoutLogin.tabTextColors = ColorStateList.valueOf(Color.parseColor("#95E1D3"))
init()
}
private fun init() {
// removing toolbar elevation
viewPagerLogin.adapter =
LoginAdapter(this)
// attaching tab mediator
TabLayoutMediator(tabLayoutLogin, viewPagerLogin,
TabConfigurationStrategy { tab: TabLayout.Tab, position: Int ->
tab.text = titles[position]
}
).attach()
}
}
package com.proyek.akhir.kodel.ui.auth
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
private const val ARG_OBJECT = "object"
class LoginAdapter(fragmentActivity: FragmentActivity) : FragmentStateAdapter(fragmentActivity) {
override fun getItemCount(): Int = 2
override fun createFragment(position: Int): Fragment {
when (position) {
0 -> return MasukFragment()
1 -> return DaftarFragment()
}
return MasukFragment()
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.auth
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.HomeActivity
import kotlinx.android.synthetic.main.fragment_masuk.view.*
/**
* A simple [Fragment] subclass.
*/
class MasukFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_masuk, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
view.masukButton.setOnClickListener {
startActivity(Intent(this.context, HomeActivity::class.java))
}
}
}
package com.proyek.akhir.kodel.ui.koperasi
import android.os.Bundle
import android.view.Menu
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.snackbar.Snackbar
import com.proyek.akhir.kodel.R
import kotlinx.android.synthetic.main.activity_beranda.*
import kotlinx.android.synthetic.main.app_bar_beranda.*
class BerandaActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_beranda)
setSupportActionBar(toolbar)
toolbar.setTitleTextAppearance(this, R.style.SnigletTextAppearance)
fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
val navController = findNavController(R.id.nav_host_fragment)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_beranda, R.id.nav_informasi_koperasi, R.id.nav_produk_koperasi
), drawer_layout
)
setupActionBarWithNavController(navController, appBarConfiguration)
nav_view.setupWithNavController(navController)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.beranda, menu)
return true
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import kotlinx.android.synthetic.main.fragment_beranda.view.*
class BerandaFragment : Fragment() {
private val listPenunggak: MutableList<Penunggak> = mutableListOf()
private lateinit var penunggakKoperasiAdapter: PenunggakKoperasiAdapter
private lateinit var homeViewModel: HomeViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_beranda, container, false)
root.rvPenunggakKoperasi.setHasFixedSize(true)
listPenunggak.addAll(getListPenunggak())
root.rvPenunggakKoperasi.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
penunggakKoperasiAdapter = PenunggakKoperasiAdapter(listPenunggak)
root.rvPenunggakKoperasi.adapter = penunggakKoperasiAdapter
//val textView: TextView = root.findViewById(R.id.text_home)
homeViewModel.text.observe(viewLifecycleOwner, Observer {
// textView.text = it
})
return root
}
private fun getListPenunggak(): ArrayList<Penunggak> {
val dataImage = resources.obtainTypedArray(R.array.img_penunggak)
val dataName = resources.getStringArray(R.array.name_penunggak)
val dataHari = resources.getStringArray(R.array.hari_penunggak)
val listPenunggakAll = ArrayList<Penunggak>()
listPenunggak.clear()
for (i in 0 until dataImage.length()) {
val penunggak = Penunggak(
dataImage.getResourceId(i, 0),
dataName[i],
dataHari[i]
)
listPenunggakAll.add(penunggak)
}
dataImage.recycle()
return listPenunggakAll
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class HomeViewModel : ViewModel() {
private val _text = MutableLiveData<String>().apply {
value = "This is beranda Fragment"
}
val text: LiveData<String> = _text
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import kotlinx.android.synthetic.main.item_penunggak.view.*
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.hariPenunggak
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.imgPenunggak
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.namePenunggak
class PenunggakKoperasiAdapter(private val listPenunggak: List<Penunggak>) :
RecyclerView.Adapter<PenunggakKoperasiAdapter.PenunggakViewHolder>() {
inner class PenunggakViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(penunggak: Penunggak) {
with(itemView) {
Glide.with(itemView.context)
.load(penunggak.imgPenunggak)
.into(imgPenunggak)
namePenunggak.text = penunggak.namePenunggak
hariPenunggak.text = penunggak.hariPenunggak
deletePenunggakBeranda.visibility = View.VISIBLE
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PenunggakViewHolder =
PenunggakViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_penunggak, parent, false
)
)
override fun getItemCount(): Int = 3
override fun onBindViewHolder(holder: PenunggakViewHolder, position: Int) {
holder.bind(listPenunggak[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.history
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import kotlinx.android.synthetic.main.activity_history_koperasi.*
class HistoryKoperasiActivity : AppCompatActivity() {
private val listHistoryKoperasi: MutableList<History> = mutableListOf()
private lateinit var historyKoperasiAdapter: HistoryKoperasiAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_history_koperasi)
rvHistoryKoperasi.setHasFixedSize(true)
listHistoryKoperasi.addAll(getListHistory())
showRecyclerView()
}
private fun getListHistory(): ArrayList<History> {
val data = resources.getStringArray(R.array.history)
val listHistoryAll = ArrayList<History>()
for (i in data.indices) {
val history = History(
data[i],
data[i]
)
listHistoryAll.add(history)
}
return listHistoryAll
}
private fun showRecyclerView() {
rvHistoryKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
historyKoperasiAdapter = HistoryKoperasiAdapter(listHistoryKoperasi)
rvHistoryKoperasi.adapter = historyKoperasiAdapter
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.history
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity
class HistoryKoperasiAdapter(private val listHistory: List<History>) :
RecyclerView.Adapter<HistoryKoperasiAdapter.HistoryViewHolder>() {
inner class HistoryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(history: History) {
with(itemView) {
itemView.setOnClickListener {
context.startActivity(
Intent(
this.context,
DetailBeritaKoperasiActivity::class.java
)
)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryViewHolder =
HistoryViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_history, parent, false
)
)
override fun getItemCount(): Int = listHistory.size
override fun onBindViewHolder(holder: HistoryViewHolder, position: Int) {
holder.bind(listHistory[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class PeminjamKoperasiActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_peminjam_koperasi)
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.confirmPeminjam
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class ConfirmasiPeminjamActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_confirmasi_peminjam)
}
}
package com.proyek.akhir.kodel.ui.koperasi.berita
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class BeritaKoperasiActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_berita_koperasi)
}
}
package com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class DetailBeritaKoperasiActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_berita_koperasi)
}
}
package com.proyek.akhir.kodel.ui.koperasi.informasi
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.proyek.akhir.kodel.R
/**
* A simple [Fragment] subclass.
*/
class InformasiKoperasiFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_informasi_koperasi, container, false)
}
}
package com.proyek.akhir.kodel.ui.koperasi.kupon
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class KuponKoperasiActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_kupon_koperasi)
}
}
package com.proyek.akhir.kodel.ui.koperasi.produk
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Produk
import kotlinx.android.synthetic.main.activity_produk_koperasi.*
class ProdukKoperasiActivity : AppCompatActivity() {
private val listProdukKoperasi: MutableList<Produk> = mutableListOf()
private lateinit var produkKoperasiAdapter: ProdukKoperasiAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_produk_koperasi)
rvProdukKoperasi.setHasFixedSize(true)
listProdukKoperasi.addAll(getListProduk())
showRecyclerProduk()
addProdukKoperasi.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
}
private fun showRecyclerProduk() {
rvProdukKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
produkKoperasiAdapter = ProdukKoperasiAdapter(listProdukKoperasi)
rvProdukKoperasi.adapter = produkKoperasiAdapter
}
private fun getListProduk(): ArrayList<Produk> {
val dataImage = resources.obtainTypedArray(R.array.img_produk)
val dataName = resources.getStringArray(R.array.nama_produk)
val dataPrice = resources.getStringArray(R.array.harga_produk)
val dataCategory = resources.getStringArray(R.array.category_produk)
val listProdukAll = ArrayList<Produk>()
listProdukAll.clear()
for (i in 0 until dataImage.length()) {
val produk = Produk(
dataImage.getResourceId(i, 0),
dataName[i],
dataPrice[i],
dataCategory[i]
)
listProdukAll.add(produk)
}
dataImage.recycle()
return listProdukAll
}
}
package com.proyek.akhir.kodel.ui.koperasi.produk
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Produk
import kotlinx.android.synthetic.main.item_produk.view.*
class ProdukKoperasiAdapter(private val listProduk: List<Produk>) :
RecyclerView.Adapter<ProdukKoperasiAdapter.ProdukViewHolder>() {
inner class ProdukViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(produk: Produk) {
with(itemView) {
Glide.with(itemView.context)
.load(produk.imgProduk)
.into(imgProduk)
namaProduk.text = produk.namaProduk
hargaProduk.text = produk.hargaProduk
categoryProduk.text = produk.categoryProduk
itemView.setOnClickListener {
// context.startActivity(Intent(this.context, DetailProdukActivity::class.java))
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProdukViewHolder =
ProdukViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_produk, parent, false
)
)
override fun getItemCount(): Int = listProduk.size
override fun onBindViewHolder(holder: ProdukViewHolder, position: Int) {
holder.bind(listProduk[position])
}
}
\ No newline at end of file
......@@ -23,7 +23,7 @@ class HomeActivity : AppCompatActivity() {
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
R.id.navigation_dashboard, R.id.navigation_produk, R.id.navigation_notifications
)
)
......
package com.proyek.akhir.kodel.ui.user.dashboard
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.BeritaItem
import kotlinx.android.synthetic.main.item_berita.view.*
class BeritaDashboardAdapter(private val listBerita: List<BeritaItem>) :
RecyclerView.Adapter<BeritaDashboardAdapter.BeritaViewHolder>() {
class BeritaViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(berita: BeritaItem) {
with(itemView) {
judulBerita.text = berita.judulBerita
tglBerita.text = berita.tglBerita
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BeritaViewHolder =
BeritaViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_berita, parent, false
)
)
override fun getItemCount(): Int = listBerita.size
override fun onBindViewHolder(holder: BeritaViewHolder, position: Int) {
holder.bind(listBerita[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.dashboard
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Berita
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.AnggotaItem
import com.proyek.akhir.kodel.data.response.BeritaItem
import com.proyek.akhir.kodel.data.response.UtangItem
import com.proyek.akhir.kodel.ui.user.dashboard.ajuanPinjaman.AjuanPinjamanActivity
import com.proyek.akhir.kodel.ui.user.dashboard.detailPenunggak.DetailPenunggakActivity
import com.proyek.akhir.kodel.ui.user.dashboard.history.HistoryActivity
import com.proyek.akhir.kodel.ui.user.dashboard.isiSaldo.IsiSaldoActivity
import com.proyek.akhir.kodel.ui.user.dashboard.tarikSaldo.TarikSaldoActivity
import kotlinx.android.synthetic.main.fragment_dashboard.*
import kotlinx.android.synthetic.main.fragment_dashboard.view.*
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit
import kotlin.collections.ArrayList
class DashboardFragment : Fragment() {
private val listPenunggak: MutableList<Penunggak> = mutableListOf()
private lateinit var penunggakDashboardAdapter: PenunggakDashboardAdapter
private lateinit var dashboardViewModel: DashboardViewModel
......@@ -21,12 +41,178 @@ class DashboardFragment : Fragment() {
savedInstanceState: Bundle?
): View? {
dashboardViewModel =
ViewModelProviders.of(this).get(DashboardViewModel::class.java)
ViewModelProvider(this).get(DashboardViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_dashboard, container, false)
val textView: TextView = root.findViewById(R.id.text_dashboard)
dashboardViewModel.text.observe(viewLifecycleOwner, Observer {
textView.text = it
})
root.dashboardLoading.visibility = View.VISIBLE
root.lnrUtang.visibility = View.GONE
root.txtNameHallo.visibility = View.GONE
root.pengingatPenunggak.visibility = View.GONE
root.rvPenunggakBeranda.setHasFixedSize(true)
listPenunggak.addAll(getListPenunggak())
root.rvPenunggakBeranda.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
penunggakDashboardAdapter = PenunggakDashboardAdapter(listPenunggak)
root.rvPenunggakBeranda.adapter = penunggakDashboardAdapter
root.isiSaldoDashboard.setOnClickListener {
startActivity(Intent(activity, IsiSaldoActivity::class.java))
}
root.tarikSaldoDashboard.setOnClickListener {
startActivity(Intent(activity, TarikSaldoActivity::class.java))
}
root.historyBellButton.setOnClickListener {
startActivity(Intent(activity, HistoryActivity::class.java))
}
root.detailPenunggak.setOnClickListener {
startActivity(Intent(activity, DetailPenunggakActivity::class.java))
}
root.ajuanPinjamDashboard.setOnClickListener {
startActivity(Intent(activity, AjuanPinjamanActivity::class.java))
}
root.refreshDashboardUser.setOnRefreshListener {
root.refreshDashboardUser.isRefreshing = true
callAnggota()
callUtang()
callBerita()
}
callAnggota()
callUtang()
return root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
rvBeritaKabarDashboard.setHasFixedSize(true)
rvBeritaKabarDashboard.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
callBerita()
}
private fun getListPenunggak(): ArrayList<Penunggak> {
val dataImage = resources.obtainTypedArray(R.array.img_penunggak)
val dataName = resources.getStringArray(R.array.name_penunggak)
val dataHari = resources.getStringArray(R.array.hari_penunggak)
val listPenunggakAll = ArrayList<Penunggak>()
listPenunggak.clear()
for (i in 0 until dataImage.length()) {
val penunggak = Penunggak(
dataImage.getResourceId(i, 0),
dataName[i],
dataHari[i]
)
listPenunggakAll.add(penunggak)
}
dataImage.recycle()
return listPenunggakAll
}
private fun callAnggota() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataAnggota().observe(viewLifecycleOwner, Observer { item ->
showData(item)
})
}
private fun callUtang() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataUtang().observe(viewLifecycleOwner, Observer { utang ->
if (utang[0].tglPinjam != null) {
lnrUtang.visibility = View.VISIBLE
showUtang(utang)
} else {
lnrUtang.visibility = View.GONE
}
})
}
private fun callBerita() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataBerita().observe(viewLifecycleOwner, Observer { berita ->
if (berita != null) {
showBerita(berita)
dashboardLoading.visibility = View.GONE
refreshDashboardUser.isRefreshing = false
} else {
lnrBeritaKabar.visibility = View.GONE
rvBeritaKabarDashboard.visibility = View.GONE
refreshDashboardUser.isRefreshing = false
}
})
}
private fun showUtang(utang: List<UtangItem>) {
sisaUtang.text = getString(R.string.sisa_utang_value, utang[0].jlhUtang)
if (utang[0].isMenunggak) {
pengingatPenunggak.visibility = View.VISIBLE
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// val current = LocalDateTime.now()
// val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
// var answer: String = current.format(formatter)
} else {
val date: Date = Calendar.getInstance().time
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
// val outputFormatter = SimpleDateFormat("dd-MM-yyyy")
// val answer = inputFormatter.format(date)
val datePinjamApi = inputFormatter.parse(utang[0].tglPinjam)
val millionSeconds = datePinjamApi?.time?.minus(Calendar.getInstance().timeInMillis)
if (millionSeconds!! <= 0) {
keteranganUtang.text = "Menunggak"
jatuhtempUtang.text = getString(
R.string.hari_lagi,
millionSeconds.let { TimeUnit.MILLISECONDS.toDays(it).toString() })
} else {
keteranganUtang.text = "Jatuh Tempo"
jatuhtempUtang.text = getString(
R.string.hari_lagi,
millionSeconds.let { TimeUnit.MILLISECONDS.toDays(it).toString() })
}
}
}
private fun showData(anggota: List<AnggotaItem>) {
saldoUser.text = getString(R.string.saldo_user_value, anggota[0].saldoAnggota)
//Nama Anggota
var name = anggota[0].namaAnggota
val arr: Array<String> = name.split(" ").toTypedArray()
val firstWord = arr[0]
txtNameHallo.visibility = View.VISIBLE
txtNameHallo.text = getString(R.string.halo_name, firstWord)
}
private fun showBerita(berita: List<BeritaItem>) {
rvBeritaKabarDashboard.adapter = BeritaDashboardAdapter(berita)
}
}
package com.proyek.akhir.kodel.ui.user.dashboard
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.Berita
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class DashboardViewModel : ViewModel() {
private val anggotaKoperasi = MutableLiveData<Anggota>()
private val anggotaUtang = MutableLiveData<Utang>()
private val anggotaBerita = MutableLiveData<Berita>()
private val _text = MutableLiveData<String>().apply {
value = "This is dashboard Fragment"
init {
getAnggotaKoperasi()
getAnggotaUtang()
}
val text: LiveData<String> = _text
private fun getAnggotaKoperasi() {
ApiClient().getServicePeople().getAnggota().enqueue(object : retrofit2.Callback<Anggota> {
override fun onFailure(call: Call<Anggota>, t: Throwable) {
anggotaKoperasi.value = null
}
override fun onResponse(call: Call<Anggota>, response: Response<Anggota>) {
if (response.isSuccessful) {
anggotaKoperasi.value = response.body()
} else {
anggotaKoperasi.value = null
}
}
})
}
private fun getAnggotaUtang() {
ApiClient().getServicePeople().getUtang().enqueue(object : retrofit2.Callback<Utang> {
override fun onFailure(call: Call<Utang>, t: Throwable) {
anggotaUtang.value = null
}
override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
if (response.isSuccessful) {
anggotaUtang.value = response.body()
} else {
anggotaUtang.value = null
}
}
})
}
private fun getGetAnggotaBerita(){
ApiClient().getServicePeople().getBerita().enqueue(object : Callback<Berita>{
override fun onFailure(call: Call<Berita>, t: Throwable) {
anggotaBerita.value = null
}
override fun onResponse(call: Call<Berita>, response: Response<Berita>) {
if(response.isSuccessful){
anggotaBerita.value = response.body()
}else{
anggotaBerita.value = null
}
}
})
}
fun setDataAnggota(): MutableLiveData<Anggota> {
return anggotaKoperasi
}
fun setDataUtang(): MutableLiveData<Utang> {
return anggotaUtang
}
fun setDataBerita(): MutableLiveData<Berita>{
return anggotaBerita
}
// val anggota : Int? = anggotaKoperasi.value?.get(0)?.saldoAnggota
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.dashboard
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import kotlinx.android.synthetic.main.item_penunggak.view.*
class PenunggakDashboardAdapter(private val listPenunggak: List<Penunggak>) :
RecyclerView.Adapter<PenunggakDashboardAdapter.PenunggakViewHolder>() {
inner class PenunggakViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(penunggak: Penunggak) {
with(itemView) {
Glide.with(itemView.context)
.load(penunggak.imgPenunggak)
.into(imgPenunggak)
namePenunggak.text = penunggak.namePenunggak
hariPenunggak.text = penunggak.hariPenunggak
deletePenunggakBeranda.visibility = View.INVISIBLE
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PenunggakViewHolder =
PenunggakViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_penunggak, parent, false
)
)
override fun getItemCount(): Int = 3
override fun onBindViewHolder(holder: PenunggakViewHolder, position: Int) {
holder.bind(listPenunggak[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.dashboard.ajuanPinjaman
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import kotlinx.android.synthetic.main.activity_ajuan_pinjaman.*
class AjuanPinjamanActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ajuan_pinjaman)
backButtonAjuanPinjaman.setOnClickListener {
onBackPressed()
}
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.ajuanPinjaman
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.MainActivity
import com.proyek.akhir.kodel.R
import kotlinx.android.synthetic.main.activity_success_pinjam.*
class SuccessPinjamActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_success_pinjam)
selesaiButton.setOnClickListener {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.detailPenunggak
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.ui.user.dashboard.PenunggakDashboardAdapter
import kotlinx.android.synthetic.main.activity_detail_penunggak.*
import kotlinx.android.synthetic.main.activity_history.*
class DetailPenunggakActivity : AppCompatActivity() {
private val listPenunggak: MutableList<Penunggak> = mutableListOf()
private lateinit var penunggakDashboardAdapter: DetailPenunggakAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_penunggak)
listPenunggak.addAll(getListPenunggak())
showRecyclerPenunggak()
}
private fun showRecyclerPenunggak() {
rvHistoryDetail.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
penunggakDashboardAdapter = DetailPenunggakAdapter(listPenunggak)
rvHistoryDetail.adapter = penunggakDashboardAdapter
}
private fun getListPenunggak(): ArrayList<Penunggak> {
val dataImage = resources.obtainTypedArray(R.array.img_penunggak)
val dataName = resources.getStringArray(R.array.name_penunggak)
val dataHari = resources.getStringArray(R.array.hari_penunggak)
val listPenunggakAll = ArrayList<Penunggak>()
listPenunggak.clear()
for (i in 0 until dataImage.length()) {
val penunggak = Penunggak(
dataImage.getResourceId(i, 0),
dataName[i],
dataHari[i]
)
listPenunggakAll.add(penunggak)
}
dataImage.recycle()
return listPenunggakAll
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.detailPenunggak
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import kotlinx.android.synthetic.main.item_penunggak.view.*
class DetailPenunggakAdapter(private val listPenunggak: List<Penunggak>) :
RecyclerView.Adapter<DetailPenunggakAdapter.PenunggakViewHolder>() {
inner class PenunggakViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(penunggak: Penunggak) {
with(itemView) {
Glide.with(itemView.context)
.load(penunggak.imgPenunggak)
.into(imgPenunggak)
namePenunggak.text = penunggak.namePenunggak
hariPenunggak.text = penunggak.hariPenunggak
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PenunggakViewHolder =
PenunggakViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_penunggak, parent, false
)
)
override fun getItemCount(): Int = listPenunggak.size
override fun onBindViewHolder(holder: PenunggakViewHolder, position: Int) {
holder.bind(listPenunggak[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.dashboard.history
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import kotlinx.android.synthetic.main.activity_history.*
class HistoryActivity : AppCompatActivity() {
private val listHistory: MutableList<History> = mutableListOf()
private lateinit var historyAdapter: HistoryAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_history)
rvHistory.setHasFixedSize(true)
listHistory.addAll(getListHistory())
showRecyclerView()
}
private fun showRecyclerView() {
rvHistory.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
historyAdapter = HistoryAdapter(listHistory)
rvHistory.adapter = historyAdapter
}
private fun getListHistory(): ArrayList<History> {
val data = resources.getStringArray(R.array.history)
val listHistoryAll = ArrayList<History>()
for (i in data.indices) {
val history = History(
data[i],
data[i]
)
listHistoryAll.add(history)
}
return listHistoryAll
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.history
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.ui.user.dashboard.history.detailHistory.DetailHistoryActivity
class HistoryAdapter(private val listHistory: List<History>) :
RecyclerView.Adapter<HistoryAdapter.HistoryViewHolder>() {
inner class HistoryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(history: History) {
with(itemView) {
itemView.setOnClickListener {
context.startActivity(Intent(this.context, DetailHistoryActivity::class.java))
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryViewHolder =
HistoryViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_history, parent, false
)
)
override fun getItemCount(): Int = listHistory.size
override fun onBindViewHolder(holder: HistoryViewHolder, position: Int) {
holder.bind(listHistory[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.dashboard.history.detailHistory
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import kotlinx.android.synthetic.main.activity_detail_history.*
class DetailHistoryActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_history)
backButtonDetailHistory.setOnClickListener {
onBackPressed()
}
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.isiSaldo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.dashboard.success.SuccessActivity
import kotlinx.android.synthetic.main.activity_isi_saldo.*
class IsiSaldoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_isi_saldo)
btnIsiSaldo.setOnClickListener {
startActivity(Intent(this, SuccessActivity::class.java))
finish()
}
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.success
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.HomeActivity
import kotlinx.android.synthetic.main.activity_success.*
class SuccessActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_success)
selesaiButton.setOnClickListener {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.tarikSaldo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.dashboard.success.SuccessActivity
import kotlinx.android.synthetic.main.activity_tarik_saldo.*
class TarikSaldoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tarik_saldo)
btnTarikSaldo.setOnClickListener {
startActivity(Intent(this, SuccessActivity::class.java))
finish()
}
}
}
package com.proyek.akhir.kodel.ui.user.produk
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.ProdukItem
import com.proyek.akhir.kodel.ui.user.produk.detail.DetailProdukActivity
import kotlinx.android.synthetic.main.item_produk.view.*
class ProdukAdapter(private val listProduk: List<ProdukItem>) :
RecyclerView.Adapter<ProdukAdapter.ProdukViewHolder>() {
inner class ProdukViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(produk: ProdukItem) {
with(itemView) {
Glide.with(itemView.context)
.load(produk.gambarProduk)
.into(imgProduk)
namaProduk.text = produk.namaProduk
hargaProduk.text = produk.hargaProduk.toString()
categoryProduk.text = produk.satuanProduk
itemView.setOnClickListener {
context.startActivity(Intent(this.context, DetailProdukActivity::class.java))
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProdukViewHolder =
ProdukViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_produk, parent, false
)
)
override fun getItemCount(): Int = listProduk.size
override fun onBindViewHolder(holder: ProdukViewHolder, position: Int) {
holder.bind(listProduk[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.produk
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.ProdukItem
import kotlinx.android.synthetic.main.fragment_produk.*
import kotlinx.android.synthetic.main.fragment_produk.view.*
import kotlinx.android.synthetic.main.fragment_produk.view.refreshProductUser
class ProdukFragment : Fragment() {
private val listProduk: MutableList<ProdukItem> = mutableListOf()
private lateinit var produkAdapter: ProdukAdapter
private lateinit var produkViewModel: ProdukViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_produk, container, false)
root.rvProduk.setHasFixedSize(true)
root.refreshProductUser.setOnRefreshListener {
root.refreshProductUser.isRefreshing = true
callProduk()
}
root.progressbarProductUser.visibility = View.VISIBLE
callProduk()
Toast.makeText(context, listProduk.size.toString(), Toast.LENGTH_SHORT).show()
root.rvProduk.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
produkAdapter = ProdukAdapter(listProduk)
root.rvProduk.adapter = produkAdapter
return root
}
private fun callProduk() {
produkViewModel = ViewModelProvider(this).get(ProdukViewModel::class.java)
produkViewModel.setDataProduk().observe(viewLifecycleOwner, Observer { produk ->
if (produk != null) {
listProduk.clear()
for (i in 0 until produk.size) {
listProduk.add(produk[i])
}
refreshProductUser.isRefreshing = false
progressbarProductUser.visibility = View.GONE
rvProduk.visibility = View.VISIBLE
// Toast.makeText(context, produk[0].namaProduk, Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(context, "Jaringan Lemah", Toast.LENGTH_SHORT).show()
progressbarProductUser.visibility = View.GONE
rvProduk.visibility = View.GONE
}
})
}
}
package com.proyek.akhir.kodel.ui.user.produk
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Response
class ProdukViewModel : ViewModel() {
private val anggotaProduk = MutableLiveData<Produk>()
init {
getProduk()
}
private fun getProduk() {
ApiClient().getServicePeople().getProduk().enqueue(object : retrofit2.Callback<Produk> {
override fun onFailure(call: Call<Produk>, t: Throwable) {
anggotaProduk.value = null
}
override fun onResponse(call: Call<Produk>, response: Response<Produk>) {
if (response.isSuccessful) {
anggotaProduk.value = response.body()
} else {
anggotaProduk.value = null
}
}
})
}
fun setDataProduk(): MutableLiveData<Produk> {
return anggotaProduk
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.produk.detail
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.produk.pembayaran.PembayaranActivity
import kotlinx.android.synthetic.main.activity_detail_produk.*
class DetailProdukActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_produk)
btnBeliProduk.setOnClickListener {
startActivity(Intent(this, PembayaranActivity::class.java))
}
}
}
package com.proyek.akhir.kodel.ui.user.produk.konfirmasi
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.HomeActivity
import kotlinx.android.synthetic.main.activity_konfirmasi_pembayaran.*
class KonfirmasiPembayaranActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_konfirmasi_pembayaran)
btnBayarCash.setOnClickListener {
startActivity(Intent(this, HomeActivity::class.java))
}
backButtonPembayaran.setOnClickListener {
onBackPressed()
}
}
}
package com.proyek.akhir.kodel.ui.user.produk.pembayaran
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.produk.konfirmasi.KonfirmasiPembayaranActivity
import kotlinx.android.synthetic.main.activity_pembayaran.*
class PembayaranActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pembayaran)
btnBayar.setOnClickListener {
startActivity(Intent(this, KonfirmasiPembayaranActivity::class.java))
}
backBtnPembayaran.setOnClickListener {
onBackPressed()
}
}
}
package com.proyek.akhir.kodel.ui.user.produk.search
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class SearchProdukActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_search_produk)
}
}
package com.proyek.akhir.kodel.ui.user.profil
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.profil.changeProfil.EditProfilActivity
import kotlinx.android.synthetic.main.fragment_profil.view.*
class ProfilFragment : Fragment() {
private lateinit var profilViewModel: ProfilViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
profilViewModel =
ViewModelProvider(this).get(ProfilViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_profil, container, false)
profilViewModel.text.observe(viewLifecycleOwner, Observer {
})
root.btnEditProfil.setOnClickListener {
context?.startActivity(Intent(this.context, EditProfilActivity::class.java))
}
return root
}
}
package com.proyek.akhir.kodel.ui.user.profil
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class ProfilViewModel : ViewModel() {
private val _text = MutableLiveData<String>().apply {
value = "This is notifications Fragment"
}
val text: LiveData<String> = _text
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.user.profil.changeProfil
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.R
class EditProfilActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_edit_profil)
}
}
package com.proyek.akhir.kodel.utils
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.util.concurrent.TimeUnit
class ApiClient {
private fun getInterceptor(): OkHttpClient {
val httpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
return OkHttpClient.Builder().addInterceptor(httpLoggingInterceptor)
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build()
}
private fun getRetrofitInstance(): Retrofit {
return Retrofit.Builder()
.baseUrl(Constans.API_GET_DATA)
.client(getInterceptor())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
fun getServicePeople(): GetService {
return getRetrofitInstance().create(GetService::class.java)
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.utils
class Constans {
companion object{
const val API_GET_DATA = "https://sheetlabs.com/DEL/"
const val API_PEOPLE = "people"
const val API_UTANG = "utang"
const val API_BERITA = "berita"
const val API_PRODUK = "produk"
const val ID_ANGGOTA = "11318025"
const val ID_SAMPLE = "11318001"
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.utils
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.Berita
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.data.response.Utang
import retrofit2.Call
import retrofit2.http.GET
interface GetService {
@GET(Constans.API_PEOPLE + "?idAnggota=" + Constans.ID_ANGGOTA)
fun getAnggota(): Call<Anggota>
@GET(Constans.API_UTANG + "?idAnggota=" + Constans.ID_SAMPLE)
fun getUtang(): Call<Utang>
@GET(Constans.API_UTANG)
fun getAllUtang(): Call<Utang>
@GET(Constans.API_BERITA)
fun getBerita(): Call<Berita>
@GET(Constans.API_PRODUK)
fun getProduk(): Call<Produk>
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorFading" />
<stroke
android:width="1dp"
android:color="@color/colorPrimary" />
<padding
android:bottom="0dp"
android:left="2dp"
android:right="2dp"
android:top="0dp" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorAccent"/>
<padding
android:bottom="5dp"
android:left="2dp"
android:right="2dp"
android:top="5dp" >
</padding>
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<size android:height="2dp"/>
<stroke
android:color="@color/colorFading"
android:dashWidth="0px"
android:dashGap="0px"
android:width="1dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="@color/colorFading"/>
<size
android:width="120dp"
android:height="120dp"/>
</shape>
\ No newline at end of file
......@@ -3,6 +3,7 @@
<solid android:color="@color/colorWhite"/>
<padding
android:bottom="5dp"
android:left="2dp"
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#90FFFFFF"/>
<padding
android:bottom="5dp"
android:left="2dp"
android:right="2dp"
android:top="5dp" >
</padding>
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"/>
</shape>
\ No newline at end of file
<vector android:height="24dp" android:tint="#393E46"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M3,4L3,1h2v3h3v2L5,6v3L3,9L3,6L0,6L0,4h3zM6,10L6,7h3L9,4h7l1.83,2L21,6c1.1,0 2,0.9 2,2v12c0,1.1 -0.9,2 -2,2L5,22c-1.1,0 -2,-0.9 -2,-2L3,10h3zM13,19c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5 -5,2.24 -5,5 2.24,5 5,5zM9.8,14c0,1.77 1.43,3.2 3.2,3.2s3.2,-1.43 3.2,-3.2 -1.43,-3.2 -3.2,-3.2 -3.2,1.43 -3.2,3.2z"/>
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/colorPrimary"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
</vector>
<vector android:height="24dp" android:tint="#FCE38A"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM12,3c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM14,17L7,17v-2h7v2zM17,13L7,13v-2h10v2zM17,9L7,9L7,7h10v2z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/colorAccent"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M19,3h-4.18C14.4,1.84 13.3,1 12,1c-1.3,0 -2.4,0.84 -2.82,2L5,3c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM13,18h-2v-2h2v2zM13,14h-2L11,8h2v6zM12,5c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1z" />
</vector>
<vector android:height="24dp" android:tint="#6FCF97"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>
<vector android:height="24dp" android:tint="#F38181"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
</vector>
<vector android:height="24dp" android:tint="#F38181"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M15,16h4v2h-4zM15,8h7v2h-7zM15,12h6v2h-6zM3,18c0,1.1 0.9,2 2,2h6c1.1,0 2,-0.9 2,-2L13,8L3,8v10zM14,5h-3l-1,-1L6,4L5,5L2,5v2h12z"/>
</vector>
<vector android:height="24dp" android:tint="#FCE38A"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/colorPrimary"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" />
<vector android:height="24dp" android:tint="#FCE38A"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>
<vector android:height="24dp" android:tint="#95E1D3"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M21,11H6.83l3.58,-3.59L9,6l-6,6 6,6 1.41,-1.41L6.83,13H21z"/>
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,12m-3.2,0a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0" />
<path
android:fillColor="#FF000000"
android:pathData="M9,2L7.17,4H4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V6c0,-1.1 -0.9,-2 -2,-2h-3.17L15,2H9zm3,15c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z" />
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M22,16V4c0,-1.1 -0.9,-2 -2,-2H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2zm-11,-4l2.03,2.71L16,11l4,5H8l3,-4zM2,6v14c0,1.1 0.9,2 2,2h14v-2H4V6H2z" />
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M4,6H2v14c0,1.1 0.9,2 2,2h14v-2H4V6zm16,-4H8c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2V4c0,-1.1 -0.9,-2 -2,-2zm-8,12.5v-9l6,4.5 -6,4.5z" />
</vector>
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
</vector>
<vector android:height="24dp" android:tint="#FCE38A"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13.41,18.09L13.41,20h-2.67v-1.93c-1.71,-0.36 -3.16,-1.46 -3.27,-3.4h1.96c0.1,1.05 0.82,1.87 2.65,1.87 1.96,0 2.4,-0.98 2.4,-1.59 0,-0.83 -0.44,-1.61 -2.67,-2.14 -2.48,-0.6 -4.18,-1.62 -4.18,-3.67 0,-1.72 1.39,-2.84 3.11,-3.21L10.74,4h2.67v1.95c1.86,0.45 2.79,1.86 2.85,3.39L14.3,9.34c-0.05,-1.11 -0.64,-1.87 -2.22,-1.87 -1.5,0 -2.4,0.68 -2.4,1.64 0,0.84 0.65,1.39 2.67,1.91s4.18,1.39 4.18,3.91c-0.01,1.83 -1.38,2.83 -3.12,3.16z"/>
</vector>
<vector android:height="24dp" android:tint="#95E1D3"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#95E1D3"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z" />
</vector>
<vector android:height="24dp" android:tint="#333333"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM12.5,7L11,7v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z"/>
</vector>
<vector android:height="24dp" android:tint="#95E1D3"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
</vector>
<vector android:height="24dp" android:tint="#FCE38A"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M20,4L4,4v2h16L20,4zM21,14v-2l-1,-5L4,7l-1,5v2h1v6h10v-6h4v6h2v-6h1zM12,18L6,18v-4h6v4z"/>
</vector>
<vector android:height="24dp" android:tint="#95E1D3"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M3.55,18.54l1.41,1.41 1.79,-1.8 -1.41,-1.41 -1.79,1.8zM11,22.45h2L13,19.5h-2v2.95zM4,10.5L1,10.5v2h3v-2zM15,6.31L15,1.5L9,1.5v4.81C7.21,7.35 6,9.28 6,11.5c0,3.31 2.69,6 6,6s6,-2.69 6,-6c0,-2.22 -1.21,-4.15 -3,-5.19zM20,10.5v2h3v-2h-3zM17.24,18.16l1.79,1.8 1.41,-1.41 -1.8,-1.79 -1.4,1.4z"/>
</vector>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="135"
android:centerColor="#009688"
android:endColor="#00695C"
android:startColor="#4DB6AC"
android:type="linear" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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"
android:background="@color/colorWhite"
tools:context=".ui.user.dashboard.ajuanPinjaman.AjuanPinjamanActivity">
<ImageButton
android:id="@+id/backButtonAjuanPinjaman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajuan Pinjaman"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Masukkan jumlah yang ingin kamu pinjam..."
android:textColor="@color/colorBlack"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonAjuanPinjaman" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/pinjamanInputMasuk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:hint="Rp"
android:theme="@style/TextLabel"
app:endIconTint="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="numberDecimal"
android:textColor="@color/colorBlack" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/btnAjuanPinjaman"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
android:background="@drawable/full_white_shape_transparant"
android:backgroundTint="@color/colorGreen"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajukan"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_beranda"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_beranda"
app:menu="@menu/activity_beranda_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.berita.BeritaKoperasiActivity">
<!-- <com.google.android.material.appbar.AppBarLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:theme="@style/AppTheme.NoActionBar">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:background="@color/colorFading"-->
<!-- app:popupTheme="@style/AppTheme.PopupOverlay"-->
<!-- app:title=" ">-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- -->
<!-- </com.google.android.material.appbar.AppBarLayout>-->
<LinearLayout
android:id="@+id/linearLayout12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:src="@drawable/ic_arrow_back_primary" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="48dp"
android:fontFamily="@font/roboto_medium"
android:gravity="center"
android:text="Berita"
android:textColor="@color/colorPrimary"
android:textSize="18sp" />
</LinearLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvBeritaKoperasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_berita" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addBeritaKoperasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_mode_edit_white_24dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity">
<ImageButton
android:id="@+id/backButtonDetailHistory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Informasi penundaan pencairan dana"
android:textColor="@color/colorBlack"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonDetailHistory" />
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_light"
android:text="12-03-2020"
android:textColor="@color/colorBlack"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView16" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:text="Dear pelanggan koperasi,Dikarenakannya akan diadakan libur nasional pada tanggal 23 mendatang, kami pihak koperasi tidak akan melayani penarikan saldo atau pun pencairan dana pada hari tersebut. Harap melakukan pencairan dana sebelum atau sesudah tanggal tersebut.\n
\nTerimakasih.
"
android:textColor="@color/colorBlack"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView17" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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"
android:background="@color/colorWhite"
tools:context=".ui.user.dashboard.history.detailHistory.DetailHistoryActivity">
<ImageButton
android:id="@+id/backButtonDetailHistory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Informasi penundaan pencairan dana"
android:textColor="@color/colorBlack"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonDetailHistory" />
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_light"
android:text="12-03-2020"
android:textColor="@color/colorBlack"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView16" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:text="Dear pelanggan koperasi,Dikarenakannya akan diadakan libur nasional pada tanggal 23 mendatang, kami pihak koperasi tidak akan melayani penarikan saldo atau pun pencairan dana pada hari tersebut. Harap melakukan pencairan dana sebelum atau sesudah tanggal tersebut.\n
\nTerimakasih.
"
android:textColor="@color/colorBlack"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView17" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<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=".ui.user.dashboard.detailPenunggak.DetailPenunggakActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistoryDetail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/item_penunggak" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment