diff --git a/briar-android/src/net/sf/briar/android/groups/GroupNameComparator.java b/briar-android/src/net/sf/briar/android/groups/GroupNameComparator.java
new file mode 100644
index 0000000000000000000000000000000000000000..47fdd6b538c7075e70d647e2d12f3ae569cc0769
--- /dev/null
+++ b/briar-android/src/net/sf/briar/android/groups/GroupNameComparator.java
@@ -0,0 +1,14 @@
+package net.sf.briar.android.groups;
+
+import java.util.Comparator;
+
+import net.sf.briar.api.messaging.Group;
+
+class GroupNameComparator implements Comparator<Group> {
+
+	static final GroupNameComparator INSTANCE = new GroupNameComparator();
+
+	public int compare(Group a, Group b) {
+		return String.CASE_INSENSITIVE_ORDER.compare(a.getName(), b.getName());
+	}
+}
diff --git a/briar-android/src/net/sf/briar/android/groups/WriteBlogPostActivity.java b/briar-android/src/net/sf/briar/android/groups/WriteBlogPostActivity.java
index f620244855e902519c43fd425415905d1fe8e3fa..37c8c79c8897b90fc9d1f60614441a2e380a844e 100644
--- a/briar-android/src/net/sf/briar/android/groups/WriteBlogPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/WriteBlogPostActivity.java
@@ -224,15 +224,16 @@ implements OnItemSelectedListener, OnClickListener {
 		runOnUiThread(new Runnable() {
 			public void run() {
 				if(groups.isEmpty()) finish();
-				int index = -1;
-				for(LocalGroup g : groups) {
-					if(g.getId().equals(localGroupId)) {
-						localGroup = g;
-						index = toAdapter.getCount();
+				toAdapter.clear();
+				for(LocalGroup g : groups) toAdapter.add(g);
+				toAdapter.sort(GroupNameComparator.INSTANCE);
+				int count = toAdapter.getCount();
+				for(int i = 0; i < count; i++) {
+					if(toAdapter.getItem(i).getId().equals(localGroupId)) {
+						toSpinner.setSelection(i);
+						break;
 					}
-					toAdapter.add(g);
 				}
-				if(index != -1) toSpinner.setSelection(index);
 			}
 		});
 	}
diff --git a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
index 18dbb71b885aac8011031aeea7bd5e610af72db0..e4f388f0ec53305455c77ecc9ce645cd99a5f993 100644
--- a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
@@ -229,15 +229,16 @@ implements OnItemSelectedListener, OnClickListener {
 		runOnUiThread(new Runnable() {
 			public void run() {
 				if(groups.isEmpty()) finish();
-				int index = -1;
-				for(Group g : groups) {
-					if(g.getId().equals(groupId)) {
-						group = g;
-						index = toAdapter.getCount();
+				toAdapter.clear();
+				for(Group g : groups) toAdapter.add(g);
+				toAdapter.sort(GroupNameComparator.INSTANCE);
+				int count = toAdapter.getCount();
+				for(int i = 0; i < count; i++) {
+					if(toAdapter.getItem(i).getId().equals(groupId)) {
+						toSpinner.setSelection(i);
+						break;
 					}
-					toAdapter.add(g);
 				}
-				if(index != -1) toSpinner.setSelection(index);
 			}
 		});
 	}