Make header decorations play well together

// FREEBIE
This commit is contained in:
Moxie Marlinspike 2017-02-15 22:39:53 -08:00
parent d9b42c4369
commit 143fb1fe21
2 changed files with 9 additions and 4 deletions

View File

@ -353,12 +353,12 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
viewHolder.setText(getContext().getResources().getQuantityString(R.plurals.ConversationAdapter_n_unread_messages, (position + 1), (position + 1))); viewHolder.setText(getContext().getResources().getQuantityString(R.plurals.ConversationAdapter_n_unread_messages, (position + 1), (position + 1)));
} }
public static class LastSeenHeader extends StickyHeaderDecoration { static class LastSeenHeader extends StickyHeaderDecoration {
private final ConversationAdapter adapter; private final ConversationAdapter adapter;
private final long lastSeenTimestamp; private final long lastSeenTimestamp;
public LastSeenHeader(ConversationAdapter adapter, long lastSeenTimestamp) { LastSeenHeader(ConversationAdapter adapter, long lastSeenTimestamp) {
super(adapter, false, false); super(adapter, false, false);
this.adapter = adapter; this.adapter = adapter;
this.lastSeenTimestamp = lastSeenTimestamp; this.lastSeenTimestamp = lastSeenTimestamp;
@ -380,6 +380,11 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
return currentRecordTimestamp > lastSeenTimestamp && previousRecordTimestamp < lastSeenTimestamp; return currentRecordTimestamp > lastSeenTimestamp && previousRecordTimestamp < lastSeenTimestamp;
} }
@Override
protected int getHeaderTop(RecyclerView parent, View child, View header, int adapterPos, int layoutPos) {
return parent.getLayoutManager().getDecoratedTop(child);
}
@Override @Override
protected HeaderViewHolder getHeader(RecyclerView parent, StickyHeaderAdapter stickyAdapter, int position) { protected HeaderViewHolder getHeader(RecyclerView parent, StickyHeaderAdapter stickyAdapter, int position) {
HeaderViewHolder viewHolder = adapter.onCreateLastSeenViewHolder(parent); HeaderViewHolder viewHolder = adapter.onCreateLastSeenViewHolder(parent);

View File

@ -127,7 +127,7 @@ public class StickyHeaderDecoration extends RecyclerView.ItemDecoration {
} }
} }
private int getHeaderTop(RecyclerView parent, View child, View header, int adapterPos, protected int getHeaderTop(RecyclerView parent, View child, View header, int adapterPos,
int layoutPos) int layoutPos)
{ {
int headerHeight = getHeaderHeightForLayout(header); int headerHeight = getHeaderHeightForLayout(header);
@ -172,7 +172,7 @@ public class StickyHeaderDecoration extends RecyclerView.ItemDecoration {
} }
} }
private int getHeaderHeightForLayout(View header) { protected int getHeaderHeightForLayout(View header) {
return renderInline ? 0 : header.getHeight(); return renderInline ? 0 : header.getHeight();
} }