From 970560c21e97bed9bfb1f7d18ec88890dbd0c5e4 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 30 Dec 2015 10:44:14 -0200
Subject: [PATCH] address issues with new BriarRecyclerView found in review

---
 .../android/contact/ContactListActivity.java      |  7 ++++++-
 .../android/util/BriarRecyclerView.java           | 15 +++++++++++----
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/contact/ContactListActivity.java b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
index 4b39c1295d..7918832545 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
@@ -133,7 +133,12 @@ public class ContactListActivity extends BriarActivity
 	private void displayContacts(final List<ContactListItem> contacts) {
 		runOnUiThread(new Runnable() {
 			public void run() {
-				adapter.addAll(contacts);
+				if (contacts.size() > 0) {
+					adapter.addAll(contacts);
+				} else {
+					// no contacts to display, make sure progress bar is hidden
+					list.showData();
+				}
 			}
 		});
 	}
diff --git a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
index 891d155ffe..4e50c1d5d5 100644
--- a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
+++ b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
@@ -49,9 +49,7 @@ public class BriarRecyclerView extends FrameLayout {
 		emptyView = (TextView) v.findViewById(R.id.emptyView);
 		progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
 
-		recyclerView.setVisibility(View.INVISIBLE);
-		emptyView.setVisibility(View.INVISIBLE);
-		progressBar.setVisibility(View.VISIBLE);
+		showProgressBar();
 
 		emptyObserver = new RecyclerView.AdapterDataObserver() {
 			@Override
@@ -72,6 +70,11 @@ public class BriarRecyclerView extends FrameLayout {
 	}
 
 	public void setAdapter(RecyclerView.Adapter adapter) {
+		RecyclerView.Adapter oldAdapter = recyclerView.getAdapter();
+		if (oldAdapter != null) {
+			oldAdapter.unregisterAdapterDataObserver(emptyObserver);
+		}
+
 		recyclerView.setAdapter(adapter);
 
 		if (adapter != null) {
@@ -95,7 +98,7 @@ public class BriarRecyclerView extends FrameLayout {
 		progressBar.setVisibility(View.VISIBLE);
 	}
 
-	private void showData() {
+	public void showData() {
 		RecyclerView.Adapter<?> adapter = recyclerView.getAdapter();
 		if (adapter != null) {
 			if (adapter.getItemCount() == 0) {
@@ -109,4 +112,8 @@ public class BriarRecyclerView extends FrameLayout {
 		}
 	}
 
+	public RecyclerView getRecyclerView() {
+		return recyclerView;
+	}
+
 }
-- 
GitLab