add stable IDs to conversations

fixes #2856
Closes #4607
// FREEBIE
This commit is contained in:
Jake McGinty
2015-11-13 13:20:16 -08:00
committed by Moxie Marlinspike
parent 945636ac5c
commit 4314a4b42b
6 changed files with 124 additions and 23 deletions

View File

@@ -128,7 +128,8 @@ public abstract class CursorRecyclerViewAdapter<VH extends RecyclerView.ViewHold
public void onItemViewRecycled(VH holder) {}
@Override public final ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
@Override
public final ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case HEADER_TYPE: return new HeaderFooterViewHolder(header);
case FOOTER_TYPE: return new HeaderFooterViewHolder(footer);
@@ -149,7 +150,8 @@ public abstract class CursorRecyclerViewAdapter<VH extends RecyclerView.ViewHold
public abstract void onBindItemViewHolder(VH viewHolder, @NonNull Cursor cursor);
@Override public int getItemViewType(int position) {
@Override
public final int getItemViewType(int position) {
if (isHeaderPosition(position)) return HEADER_TYPE;
if (isFooterPosition(position)) return FOOTER_TYPE;
moveToPositionOrThrow(getCursorPosition(position));
@@ -160,6 +162,16 @@ public abstract class CursorRecyclerViewAdapter<VH extends RecyclerView.ViewHold
return 0;
}
@Override
public final long getItemId(int position) {
moveToPositionOrThrow(getCursorPosition(position));
return getItemId(cursor);
}
public long getItemId(@NonNull Cursor cursor) {
return cursor.getLong(cursor.getColumnIndexOrThrow("_id"));
}
private void assertActiveCursor() {
if (!isActiveCursor()) {
throw new IllegalStateException("this should only be called when the cursor is valid");