mirror of
https://github.com/hmalik144/Farmr.git
synced 2025-12-10 02:25:19 +00:00
Merge pull request #28 from hmalik144/show_empty_view
Empty view displayed
This commit is contained in:
@@ -13,8 +13,8 @@ android {
|
||||
applicationId "com.appttude.h_mal.farmr"
|
||||
minSdkVersion MIN_SDK_VERSION
|
||||
targetSdkVersion TARGET_SDK_VERSION
|
||||
versionCode 2
|
||||
versionName "2.0"
|
||||
versionCode 3
|
||||
versionName "2.1"
|
||||
testInstrumentationRunner 'com.appttude.h_mal.farmr.application.TestRunner'
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.appttude.h_mal.farmr.ui.robots
|
||||
|
||||
import androidx.test.espresso.Espresso
|
||||
import androidx.test.espresso.action.ViewActions.scrollTo
|
||||
import com.appttude.h_mal.farmr.R
|
||||
import com.appttude.h_mal.farmr.model.ShiftType
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.appttude.h_mal.farmr.base
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.appttude.h_mal.farmr.utils.hide
|
||||
import com.appttude.h_mal.farmr.utils.show
|
||||
|
||||
abstract class BaseListAdapter<T : Any>(
|
||||
diff: DiffUtil.ItemCallback<T>,
|
||||
private val layoutId: Int,
|
||||
private val emptyView: View
|
||||
) : ListAdapter<T, BaseListAdapter.CurrentViewHolder>(diff) {
|
||||
|
||||
override fun onCreateViewHolder(
|
||||
parent: ViewGroup,
|
||||
viewType: Int
|
||||
): CurrentViewHolder {
|
||||
val currentViewHolder = LayoutInflater
|
||||
.from(parent.context)
|
||||
.inflate(layoutId, parent, false)
|
||||
return CurrentViewHolder(currentViewHolder)
|
||||
}
|
||||
|
||||
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
||||
super.onAttachedToRecyclerView(recyclerView)
|
||||
registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
|
||||
override fun onChanged() {
|
||||
checkEmpty()
|
||||
}
|
||||
|
||||
override fun onItemRangeChanged(positionStart: Int, itemCount: Int) {
|
||||
checkEmpty()
|
||||
}
|
||||
|
||||
override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) {
|
||||
checkEmpty()
|
||||
}
|
||||
|
||||
override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) {
|
||||
checkEmpty()
|
||||
}
|
||||
|
||||
override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
|
||||
checkEmpty()
|
||||
}
|
||||
|
||||
fun checkEmpty() {
|
||||
if (itemCount == 0) emptyView.show()
|
||||
else emptyView.hide()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
class CurrentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
|
||||
}
|
||||
@@ -7,10 +7,10 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||
import com.appttude.h_mal.farmr.utils.generateView
|
||||
|
||||
open class BaseRecyclerAdapter<T: Any>(
|
||||
open class BaseRecyclerAdapter<T : Any>(
|
||||
@LayoutRes private val emptyViewId: Int,
|
||||
@LayoutRes private val currentViewId: Int
|
||||
): RecyclerView.Adapter<ViewHolder>() {
|
||||
) : RecyclerView.Adapter<ViewHolder>() {
|
||||
var list: List<T>? = null
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
@@ -37,6 +37,6 @@ open class BaseRecyclerAdapter<T: Any>(
|
||||
open fun bindEmptyView(view: View) {}
|
||||
open fun bindCurrentView(view: View, position: Int, data: T) {}
|
||||
|
||||
class EmptyViewHolder(itemView: View): ViewHolder(itemView)
|
||||
class CurrentViewHolder(itemView: View): ViewHolder(itemView)
|
||||
class EmptyViewHolder(itemView: View) : ViewHolder(itemView)
|
||||
class CurrentViewHolder(itemView: View) : ViewHolder(itemView)
|
||||
}
|
||||
@@ -41,20 +41,13 @@ class FragmentMain : BaseFragment<MainViewModel>(R.layout.fragment_main), BackPr
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mAdapter = ShiftListAdapter(this) {
|
||||
emptyView = view.findViewById(R.id.empty_view)
|
||||
productListView = view.findViewById(R.id.list_item_view)
|
||||
|
||||
mAdapter = ShiftListAdapter(this, emptyView) {
|
||||
viewModel.deleteShift(it)
|
||||
}
|
||||
productListView = view.findViewById(R.id.list_item_view)
|
||||
productListView.adapter = mAdapter
|
||||
emptyView = view.findViewById(R.id.empty_view)
|
||||
|
||||
mAdapter.registerAdapterDataObserver(object : AdapterDataObserver() {
|
||||
override fun onChanged() {
|
||||
super.onChanged()
|
||||
if (mAdapter.itemCount == 0) emptyView.show()
|
||||
else emptyView.hide()
|
||||
}
|
||||
})
|
||||
|
||||
view.findViewById<FloatingActionButton>(R.id.fab1).setOnClickListener {
|
||||
navigateToFragment(FragmentAddItem(), name = "additem")
|
||||
|
||||
@@ -3,34 +3,27 @@ package com.appttude.h_mal.farmr.ui
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.AlertDialog
|
||||
import android.os.Bundle
|
||||
import android.view.ViewGroup
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import com.appttude.h_mal.farmr.R
|
||||
import com.appttude.h_mal.farmr.base.BaseRecyclerAdapter
|
||||
import com.appttude.h_mal.farmr.base.BaseListAdapter
|
||||
import com.appttude.h_mal.farmr.data.legacydb.ShiftObject
|
||||
import com.appttude.h_mal.farmr.model.ShiftType
|
||||
import com.appttude.h_mal.farmr.utils.ID
|
||||
import com.appttude.h_mal.farmr.utils.generateView
|
||||
import com.appttude.h_mal.farmr.utils.formatToTwoDpString
|
||||
import com.appttude.h_mal.farmr.utils.navigateToFragment
|
||||
|
||||
class ShiftListAdapter(
|
||||
private val fragment: Fragment,
|
||||
emptyView: View,
|
||||
private val longPressCallback: (Long) -> Unit
|
||||
) : ListAdapter<ShiftObject, BaseRecyclerAdapter.CurrentViewHolder>(diffCallBack) {
|
||||
override fun onCreateViewHolder(
|
||||
parent: ViewGroup,
|
||||
viewType: Int
|
||||
): BaseRecyclerAdapter.CurrentViewHolder {
|
||||
val currentViewHolder = parent.generateView(R.layout.list_item_1)
|
||||
return BaseRecyclerAdapter.CurrentViewHolder(currentViewHolder)
|
||||
}
|
||||
) : BaseListAdapter<ShiftObject>(diffCallBack, R.layout.list_item_1, emptyView) {
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onBindViewHolder(holder: BaseRecyclerAdapter.CurrentViewHolder, position: Int) {
|
||||
override fun onBindViewHolder(holder: CurrentViewHolder, position: Int) {
|
||||
val view = holder.itemView
|
||||
val data = getItem(position)
|
||||
|
||||
@@ -47,7 +40,7 @@ class ShiftListAdapter(
|
||||
val typeText: String = data.type
|
||||
val descriptionText: String = data.description
|
||||
val dateText: String = data.date
|
||||
val totalPayText: String = data.totalPay.toString()
|
||||
val totalPayText: String = data.totalPay.formatToTwoDpString()
|
||||
|
||||
descriptionTextView.text = descriptionText
|
||||
dateTextView.text = dateText
|
||||
|
||||
@@ -22,6 +22,7 @@ class SplashScreen : Activity() {
|
||||
Handler(Looper.getMainLooper()).postDelayed({
|
||||
startActivity(i)
|
||||
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
|
||||
this.finish()
|
||||
}, SPLASH_TIME_OUT)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,8 @@ import java.util.Currency
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
||||
fun String.formatToTwoDp(): Float {
|
||||
val formattedString = String.format("%.2f", this)
|
||||
return formattedString.toFloat()
|
||||
fun String.formatToTwoDp(): String {
|
||||
return String.format("%.2f", this)
|
||||
}
|
||||
|
||||
fun Float.formatToTwoDp(): Float {
|
||||
@@ -27,7 +26,7 @@ fun Float.formatAsCurrencyString(): String? {
|
||||
}
|
||||
|
||||
fun Float.formatToTwoDpString(): String {
|
||||
return formatToTwoDp().toString()
|
||||
return toBigDecimal().setScale(2).toString()
|
||||
}
|
||||
|
||||
fun String.dateStringIsValid(): Boolean {
|
||||
|
||||
@@ -24,8 +24,11 @@
|
||||
app:backgroundTint="@color/colorPrimary" />
|
||||
|
||||
<include
|
||||
android:visibility="gone"
|
||||
android:layout_centerInParent="true"
|
||||
android:visibility="visible"
|
||||
layout="@layout/empty_list_view"
|
||||
android:id="@+id/empty_view"/>
|
||||
android:id="@+id/empty_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
Reference in New Issue
Block a user