Fixed flicker when loading contact list. #297

This commit is contained in:
akwizgran
2016-04-15 11:05:02 +01:00
parent 0f9338f5e9
commit f1a83139cf
4 changed files with 24 additions and 6 deletions

View File

@@ -155,6 +155,11 @@ public class ContactListFragment extends BaseEventFragment {
loadContacts();
}
@Override
public void onPause() {
super.onPause();
adapter.clear();
}
private void loadContacts() {
listener.runOnDbThread(new Runnable() {
@@ -195,7 +200,6 @@ public class ContactListFragment extends BaseEventFragment {
private void displayContacts(final List<ContactListItem> contacts) {
listener.runOnUiThread(new Runnable() {
public void run() {
adapter.clear();
if (contacts.size() == 0) list.showData();
else adapter.addAll(contacts);
}

View File

@@ -81,8 +81,8 @@ import im.delight.android.identicons.IdenticonDrawable;
import static android.widget.Toast.LENGTH_SHORT;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
public class ConversationActivity extends BriarActivity
implements EventListener, OnClickListener,
@@ -302,6 +302,8 @@ public class ConversationActivity extends BriarActivity
// so let the list know to hide progress bar
list.showData();
} else {
List<ConversationItem> items =
new ArrayList<ConversationItem>();
for (PrivateMessageHeader h : headers) {
ConversationMessageItem item =
(ConversationMessageItem) ConversationItem
@@ -309,7 +311,7 @@ public class ConversationActivity extends BriarActivity
byte[] body = bodyCache.get(h.getId());
if (body == null) loadMessageBody(h);
else item.setBody(body);
adapter.add(item);
items.add(item);
}
for (IntroductionMessage m : introductions) {
ConversationItem item;
@@ -322,8 +324,9 @@ public class ConversationActivity extends BriarActivity
contactName,
(IntroductionResponse) m);
}
adapter.add(item);
items.add(item);
}
adapter.addAll(items);
// Scroll to the bottom
list.scrollToPosition(adapter.getItemCount() - 1);
}

View File

@@ -18,19 +18,21 @@ import org.briarproject.api.introduction.SessionId;
import org.briarproject.api.messaging.PrivateMessageHeader;
import org.briarproject.util.StringUtils;
import java.util.List;
import im.delight.android.identicons.IdenticonDrawable;
import static android.support.v7.util.SortedList.INVALID_POSITION;
import static android.support.v7.widget.RecyclerView.ViewHolder;
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_IN;
import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_OUT;
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
import static org.briarproject.android.contact.ConversationItem.MSG_IN;
import static org.briarproject.android.contact.ConversationItem.MSG_IN_UNREAD;
import static org.briarproject.android.contact.ConversationItem.MSG_OUT;
import static org.briarproject.android.contact.ConversationItem.NOTICE_IN;
import static org.briarproject.android.contact.ConversationItem.NOTICE_OUT;
import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
import static org.briarproject.android.contact.ConversationItem.IncomingItem;
class ConversationAdapter extends RecyclerView.Adapter {
@@ -367,6 +369,10 @@ class ConversationAdapter extends RecyclerView.Adapter {
items.clear();
}
public void addAll(List<ConversationItem> items) {
this.items.addAll(items);
}
private static class MessageHolder extends RecyclerView.ViewHolder {
public ViewGroup layout;

View File

@@ -131,6 +131,12 @@ public class ContactChooserFragment extends BaseFragment {
loadContacts();
}
@Override
public void onPause() {
super.onPause();
adapter.clear();
}
@Override
public String getUniqueTag() {
return TAG;
@@ -175,7 +181,6 @@ public class ContactChooserFragment extends BaseFragment {
introductionActivity.runOnUiThread(new Runnable() {
public void run() {
adapter.setLocalAuthor(localAuthorId);
adapter.clear();
if (contacts.size() == 0) list.showData();
else adapter.addAll(contacts);
}