diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java index 9e4bbe51e..0a36ac80e 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadItemAdapter.java @@ -66,31 +66,29 @@ public class ThreadItemAdapter revision++; } - void setBottomItem(MessageId messageId) { + // Useful when the adapter has not calculated the dimension yet + void postSetItemWithIdVisible(@Nullable final MessageId messageId) { + new Handler().post(new Runnable() { + @Override + public void run() { + setItemWithIdVisible(messageId); + } + }); + } + + void setItemWithIdVisible(@Nullable MessageId messageId) { if (messageId != null) { int pos = 0; for (I item : items) { if (item.getId().equals(messageId)) { - scrollToPosition(pos); + layoutManager.scrollToPosition(pos); break; - } pos++; } } } - private void scrollToPosition(final int pos) { - // Post call ensures that the list scrolls AFTER it has been propagated - // and the layout has been calculated. - handler.post(new Runnable() { - @Override - public void run() { - layoutManager.scrollToPosition(pos); - } - }); - } - public void setItems(Collection items) { this.items.clear(); this.items.addAll(items); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java index dc184365e..68cec97a2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java @@ -148,7 +148,8 @@ public abstract class ThreadListActivity handler); - interface ThreadListListener extends DestroyableContext { + interface ThreadListListener extends ThreadListDataSource { @UiThread void onHeaderReceived(H header); @@ -53,10 +53,10 @@ public interface ThreadListController