diff --git a/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/DonutList.kt b/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/DonutList.kt index 35952d4e..0d748e1e 100644 --- a/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/DonutList.kt +++ b/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/DonutList.kt @@ -23,9 +23,9 @@ import androidx.core.app.NotificationManagerCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.observe -import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import com.android.samples.donuttracker.databinding.DonutListBinding +import com.android.samples.donuttracker.extension.clickWithDebounce import com.android.samples.donuttracker.storage.DonutDatabase import kotlinx.android.synthetic.main.donut_list.* @@ -60,8 +60,8 @@ class DonutList : Fragment() { recyclerView.adapter = adapter - binding.fab.setOnClickListener { fabView -> - fabView.findNavController().navigate( + binding.fab.clickWithDebounce { + findNavController().navigate( DonutListDirections.actionDonutListToDonutEntryDialogFragment() ) } diff --git a/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/extension/ViewExtension.kt b/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/extension/ViewExtension.kt new file mode 100644 index 00000000..59c8e7fe --- /dev/null +++ b/MADSkillsNavigationSample/app/src/main/java/com/android/samples/donuttracker/extension/ViewExtension.kt @@ -0,0 +1,18 @@ +package com.android.samples.donuttracker.extension + +import android.view.View + +fun View.clickWithDebounce(debounceTime: Long = 1000L, action: () -> Unit) { + this.setOnClickListener(object : View.OnClickListener { + private var lastClickTime: Long = 0 + + override fun onClick(v: View?) { + if (System.currentTimeMillis() - lastClickTime < debounceTime) { + return + } + action() + lastClickTime = System.currentTimeMillis() + } + + }) +} \ No newline at end of file