Merge pull request #31 from hmalik144/master

Android 33 version update
This commit is contained in:
2023-09-08 15:20:02 +01:00
committed by GitHub
10 changed files with 87 additions and 40 deletions

View File

@@ -13,8 +13,8 @@ android {
applicationId "com.appttude.h_mal.farmr" applicationId "com.appttude.h_mal.farmr"
minSdkVersion MIN_SDK_VERSION minSdkVersion MIN_SDK_VERSION
targetSdkVersion TARGET_SDK_VERSION targetSdkVersion TARGET_SDK_VERSION
versionCode 3 versionCode 4
versionName "2.1" versionName "2.2"
testInstrumentationRunner 'com.appttude.h_mal.farmr.application.TestRunner' testInstrumentationRunner 'com.appttude.h_mal.farmr.application.TestRunner'
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
} }

View File

@@ -1,6 +1,5 @@
package com.appttude.h_mal.farmr.ui.robots package com.appttude.h_mal.farmr.ui.robots
import androidx.test.espresso.Espresso
import androidx.test.espresso.action.ViewActions.scrollTo import androidx.test.espresso.action.ViewActions.scrollTo
import com.appttude.h_mal.farmr.R import com.appttude.h_mal.farmr.R
import com.appttude.h_mal.farmr.model.ShiftType import com.appttude.h_mal.farmr.model.ShiftType

View File

@@ -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)
}

View File

@@ -7,10 +7,10 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.appttude.h_mal.farmr.utils.generateView 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 emptyViewId: Int,
@LayoutRes private val currentViewId: Int @LayoutRes private val currentViewId: Int
): RecyclerView.Adapter<ViewHolder>() { ) : RecyclerView.Adapter<ViewHolder>() {
var list: List<T>? = null var list: List<T>? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@@ -37,6 +37,6 @@ open class BaseRecyclerAdapter<T: Any>(
open fun bindEmptyView(view: View) {} open fun bindEmptyView(view: View) {}
open fun bindCurrentView(view: View, position: Int, data: T) {} open fun bindCurrentView(view: View, position: Int, data: T) {}
class EmptyViewHolder(itemView: View): ViewHolder(itemView) class EmptyViewHolder(itemView: View) : ViewHolder(itemView)
class CurrentViewHolder(itemView: View): ViewHolder(itemView) class CurrentViewHolder(itemView: View) : ViewHolder(itemView)
} }

View File

@@ -41,20 +41,13 @@ class FragmentMain : BaseFragment<MainViewModel>(R.layout.fragment_main), BackPr
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) 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) viewModel.deleteShift(it)
} }
productListView = view.findViewById(R.id.list_item_view)
productListView.adapter = mAdapter 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 { view.findViewById<FloatingActionButton>(R.id.fab1).setOnClickListener {
navigateToFragment(FragmentAddItem(), name = "additem") navigateToFragment(FragmentAddItem(), name = "additem")

View File

@@ -3,34 +3,27 @@ package com.appttude.h_mal.farmr.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.AlertDialog import android.app.AlertDialog
import android.os.Bundle import android.os.Bundle
import android.view.ViewGroup import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import com.appttude.h_mal.farmr.R 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.data.legacydb.ShiftObject
import com.appttude.h_mal.farmr.model.ShiftType import com.appttude.h_mal.farmr.model.ShiftType
import com.appttude.h_mal.farmr.utils.ID 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 import com.appttude.h_mal.farmr.utils.navigateToFragment
class ShiftListAdapter( class ShiftListAdapter(
private val fragment: Fragment, private val fragment: Fragment,
emptyView: View,
private val longPressCallback: (Long) -> Unit private val longPressCallback: (Long) -> Unit
) : ListAdapter<ShiftObject, BaseRecyclerAdapter.CurrentViewHolder>(diffCallBack) { ) : BaseListAdapter<ShiftObject>(diffCallBack, R.layout.list_item_1, emptyView) {
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): BaseRecyclerAdapter.CurrentViewHolder {
val currentViewHolder = parent.generateView(R.layout.list_item_1)
return BaseRecyclerAdapter.CurrentViewHolder(currentViewHolder)
}
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: BaseRecyclerAdapter.CurrentViewHolder, position: Int) { override fun onBindViewHolder(holder: CurrentViewHolder, position: Int) {
val view = holder.itemView val view = holder.itemView
val data = getItem(position) val data = getItem(position)
@@ -47,7 +40,7 @@ class ShiftListAdapter(
val typeText: String = data.type val typeText: String = data.type
val descriptionText: String = data.description val descriptionText: String = data.description
val dateText: String = data.date val dateText: String = data.date
val totalPayText: String = data.totalPay.toString() val totalPayText: String = data.totalPay.formatToTwoDpString()
descriptionTextView.text = descriptionText descriptionTextView.text = descriptionText
dateTextView.text = dateText dateTextView.text = dateText

View File

@@ -22,6 +22,7 @@ class SplashScreen : Activity() {
Handler(Looper.getMainLooper()).postDelayed({ Handler(Looper.getMainLooper()).postDelayed({
startActivity(i) startActivity(i)
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out) overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
this.finish()
}, SPLASH_TIME_OUT) }, SPLASH_TIME_OUT)
} }

View File

@@ -8,9 +8,8 @@ import java.util.Currency
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale
fun String.formatToTwoDp(): Float { fun String.formatToTwoDp(): String {
val formattedString = String.format("%.2f", this) return String.format("%.2f", this)
return formattedString.toFloat()
} }
fun Float.formatToTwoDp(): Float { fun Float.formatToTwoDp(): Float {
@@ -27,7 +26,7 @@ fun Float.formatAsCurrencyString(): String? {
} }
fun Float.formatToTwoDpString(): String { fun Float.formatToTwoDpString(): String {
return formatToTwoDp().toString() return toBigDecimal().setScale(2).toString()
} }
fun String.dateStringIsValid(): Boolean { fun String.dateStringIsValid(): Boolean {

View File

@@ -24,8 +24,11 @@
app:backgroundTint="@color/colorPrimary" /> app:backgroundTint="@color/colorPrimary" />
<include <include
android:visibility="gone" android:layout_centerInParent="true"
android:visibility="visible"
layout="@layout/empty_list_view" 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> </RelativeLayout>

View File

@@ -26,8 +26,8 @@ KOTLIN_VERSION = 1.7.10
GRADLE_ANALYZE_VERSION = 1.20.0 GRADLE_ANALYZE_VERSION = 1.20.0
# Android configuration # Android configuration
COMPILE_SDK_VERSION = android-31 COMPILE_SDK_VERSION = android-33
TARGET_SDK_VERSION = 31 TARGET_SDK_VERSION = 33
MIN_SDK_VERSION = 21 MIN_SDK_VERSION = 21
# Gradle parameters # Gradle parameters