diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
index e5b4ccd11b9d1406aa5d4f6930d73ee7f9e49bc9..d27f63c2d8514c8540da693f2d67616d31550947 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistCertificateAdapter.kt
@@ -34,11 +34,16 @@ import de.kuschku.quasseldroid.util.helper.visibleIf
 class WhitelistCertificateAdapter :
   RecyclerView.Adapter<WhitelistCertificateAdapter.WhitelistItemViewHolder>() {
   private var clickListener: ((QuasselDatabase.SslValidityWhitelistEntry) -> Unit)? = null
+  private var updateListener: ((List<QuasselDatabase.SslValidityWhitelistEntry>) -> Unit)? = null
 
   fun setOnClickListener(listener: ((QuasselDatabase.SslValidityWhitelistEntry) -> Unit)?) {
     clickListener = listener
   }
 
+  fun setOnUpdateListener(listener: ((List<QuasselDatabase.SslValidityWhitelistEntry>) -> Unit)?) {
+    updateListener = listener
+  }
+
   private val data = mutableListOf<QuasselDatabase.SslValidityWhitelistEntry>()
   var list: List<QuasselDatabase.SslValidityWhitelistEntry>
     get() = data
@@ -48,17 +53,20 @@ class WhitelistCertificateAdapter :
       notifyItemRangeRemoved(0, length)
       data.addAll(value)
       notifyItemRangeInserted(0, list.size)
+      updateListener?.invoke(list)
     }
 
   fun add(item: QuasselDatabase.SslValidityWhitelistEntry) {
     val index = data.size
     data.add(item)
     notifyItemInserted(index)
+    updateListener?.invoke(list)
   }
 
   fun replace(index: Int, item: QuasselDatabase.SslValidityWhitelistEntry) {
     data[index] = item
     notifyItemChanged(index)
+    updateListener?.invoke(list)
   }
 
   fun indexOf(item: QuasselDatabase.SslValidityWhitelistEntry) = data.indexOf(item)
@@ -66,6 +74,7 @@ class WhitelistCertificateAdapter :
   fun remove(index: Int) {
     data.removeAt(index)
     notifyItemRemoved(index)
+    updateListener?.invoke(list)
   }
 
   fun remove(item: QuasselDatabase.SslValidityWhitelistEntry) = remove(indexOf(item))
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
index 576d5597fe6a5e47d04d732ae099a8da68dc0c48..f4fc55739cdedaa4dcd3aea4c4842d7a349af3fb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragment.kt
@@ -92,17 +92,24 @@ class WhitelistFragment : SettingsFragment(), SettingsFragment.Changeable,
     hostnameList.addItemDecoration(DividerItemDecoration(context, LinearLayoutManager.VERTICAL))
     ViewCompat.setNestedScrollingEnabled(hostnameList, false)
 
+    certificateAdapter.setOnUpdateListener {
+      activity?.runOnUiThread {
+        certificateListEmpty.visibleIf(it.isNullOrEmpty())
+      }
+    }
+
+    hostnameAdapter.setOnUpdateListener {
+      activity?.runOnUiThread {
+        hostnameListEmpty.visibleIf(it.isNullOrEmpty())
+      }
+    }
+
     handler.post {
       whitelist = Whitelist(database.validityWhitelist().all(), database.hostnameWhitelist().all())
       whitelist?.let {
         certificateAdapter.list = it.certificates
         hostnameAdapter.list = it.hostnames
       }
-
-      activity?.runOnUiThread {
-        certificateListEmpty.visibleIf(whitelist?.certificates.isNullOrEmpty())
-        hostnameListEmpty.visibleIf(whitelist?.hostnames.isNullOrEmpty())
-      }
     }
     return view
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
index 07dcaae9fd40f7b98d887af8b34c141a58755212..262d08e6f5d66c79e57a3e8b7a975f86b787c973 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistHostnameAdapter.kt
@@ -32,6 +32,12 @@ import de.kuschku.quasseldroid.persistence.QuasselDatabase
 
 class WhitelistHostnameAdapter :
   RecyclerView.Adapter<WhitelistHostnameAdapter.WhitelistItemViewHolder>() {
+  private var updateListener: ((List<QuasselDatabase.SslHostnameWhitelistEntry>) -> Unit)? = null
+
+  fun setOnUpdateListener(listener: ((List<QuasselDatabase.SslHostnameWhitelistEntry>) -> Unit)?) {
+    updateListener = listener
+  }
+
   private val data = mutableListOf<QuasselDatabase.SslHostnameWhitelistEntry>()
   var list: List<QuasselDatabase.SslHostnameWhitelistEntry>
     get() = data
@@ -41,17 +47,20 @@ class WhitelistHostnameAdapter :
       notifyItemRangeRemoved(0, length)
       data.addAll(value)
       notifyItemRangeInserted(0, list.size)
+      updateListener?.invoke(list)
     }
 
   fun add(item: QuasselDatabase.SslHostnameWhitelistEntry) {
     val index = data.size
     data.add(item)
     notifyItemInserted(index)
+    updateListener?.invoke(list)
   }
 
   fun replace(index: Int, item: QuasselDatabase.SslHostnameWhitelistEntry) {
     data[index] = item
     notifyItemChanged(index)
+    updateListener?.invoke(list)
   }
 
   fun indexOf(item: QuasselDatabase.SslHostnameWhitelistEntry) = data.indexOf(item)
@@ -59,6 +68,7 @@ class WhitelistHostnameAdapter :
   fun remove(index: Int) {
     data.removeAt(index)
     notifyItemRemoved(index)
+    updateListener?.invoke(list)
   }
 
   fun remove(item: QuasselDatabase.SslHostnameWhitelistEntry) = remove(indexOf(item))