mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-29 20:37:12 +01:00
Implement two pane layout in ViewPostDetailFragment to separate post detail and comments. Fix bugs related to separating CommentAndPostRecyclerViewAdapter.
This commit is contained in:
parent
e222fbc5b1
commit
11ec08c12f
@ -393,9 +393,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
Comment comment = getCurrentComment(position);
|
||||
if (comment != null) {
|
||||
if (mIsSingleCommentThreadMode && comment.getId().equals(mSingleCommentId)) {
|
||||
((CommentViewHolder) holder).itemView.setBackgroundColor(mSingleCommentThreadBackgroundColor);
|
||||
holder.itemView.setBackgroundColor(mSingleCommentThreadBackgroundColor);
|
||||
} else if (comment.getAwards() != null && !comment.getAwards().equals("")) {
|
||||
((CommentViewHolder) holder).itemView.setBackgroundColor(mAwardedCommentBackgroundColor);
|
||||
holder.itemView.setBackgroundColor(mAwardedCommentBackgroundColor);
|
||||
}
|
||||
|
||||
String authorPrefixed = "u/" + comment.getAuthor();
|
||||
@ -591,9 +591,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 2, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.get(parentPosition).getChildren()
|
||||
@ -612,16 +612,16 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
|
||||
mVisibleComments.remove(placeholderPosition);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(placeholderPosition + 2);
|
||||
} else {
|
||||
notifyItemRemoved(placeholderPosition + 1);
|
||||
} else {
|
||||
notifyItemRemoved(placeholderPosition);
|
||||
}
|
||||
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 2, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -654,9 +654,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
|
||||
mVisibleComments.addAll(placeholderPosition, expandedComments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(placeholderPosition + 2, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition + 1, expandedComments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(placeholderPosition, expandedComments.size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -784,15 +784,15 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.subList(position + 1, position + 1 + allChildrenSize).clear();
|
||||
}
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
if (mFullyCollapseComment) {
|
||||
notifyItemChanged(position + 2);
|
||||
}
|
||||
notifyItemRangeRemoved(position + 3, allChildrenSize);
|
||||
} else {
|
||||
if (mFullyCollapseComment) {
|
||||
notifyItemChanged(position + 1);
|
||||
}
|
||||
notifyItemRangeRemoved(position + 2, allChildrenSize);
|
||||
} else {
|
||||
if (mFullyCollapseComment) {
|
||||
notifyItemChanged(position);
|
||||
}
|
||||
notifyItemRangeRemoved(position + 1, allChildrenSize);
|
||||
}
|
||||
}
|
||||
|
||||
@ -801,32 +801,32 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
isInitiallyLoading = false;
|
||||
isInitiallyLoadingFailed = false;
|
||||
if (comments.size() == 0) {
|
||||
notifyItemChanged(1);
|
||||
notifyItemChanged(0);
|
||||
} else {
|
||||
notifyItemRemoved(1);
|
||||
notifyItemRemoved(0);
|
||||
}
|
||||
}
|
||||
|
||||
int sizeBefore = mVisibleComments.size();
|
||||
mVisibleComments.addAll(comments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(sizeBefore + 2, comments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(sizeBefore + 1, comments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(sizeBefore, comments.size());
|
||||
}
|
||||
|
||||
if (mHasMoreComments != hasMoreComments) {
|
||||
if (hasMoreComments) {
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemInserted(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemInserted(mVisibleComments.size() + 1);
|
||||
} else {
|
||||
notifyItemInserted(mVisibleComments.size());
|
||||
}
|
||||
} else {
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemRemoved(mVisibleComments.size() + 1);
|
||||
} else {
|
||||
notifyItemRemoved(mVisibleComments.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -865,18 +865,18 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.get(parentPosition).setExpanded(true);
|
||||
mVisibleComments.addAll(parentPosition + 1, newList);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(parentPosition + 2);
|
||||
notifyItemRangeInserted(parentPosition + 3, newList.size());
|
||||
} else {
|
||||
notifyItemChanged(parentPosition + 1);
|
||||
notifyItemRangeInserted(parentPosition + 2, newList.size());
|
||||
} else {
|
||||
notifyItemChanged(parentPosition);
|
||||
notifyItemRangeInserted(parentPosition + 1, newList.size());
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.add(parentPosition + 1, comment);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemInserted(parentPosition + 3);
|
||||
} else {
|
||||
notifyItemInserted(parentPosition + 2);
|
||||
} else {
|
||||
notifyItemInserted(parentPosition + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -895,35 +895,35 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
int previousSize = mVisibleComments.size();
|
||||
mVisibleComments.clear();
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeRemoved(1, previousSize + 1);
|
||||
notifyItemRangeRemoved(0, previousSize + 1);
|
||||
} else {
|
||||
notifyItemRangeRemoved(1, previousSize);
|
||||
notifyItemRangeRemoved(0, previousSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (isInitiallyLoading || isInitiallyLoadingFailed || mVisibleComments.size() == 0) {
|
||||
if (isInitiallyLoading || isInitiallyLoadingFailed) {
|
||||
isInitiallyLoading = true;
|
||||
isInitiallyLoadingFailed = false;
|
||||
notifyItemChanged(1);
|
||||
notifyItemChanged(0);
|
||||
} else {
|
||||
isInitiallyLoading = true;
|
||||
isInitiallyLoadingFailed = false;
|
||||
notifyItemInserted(1);
|
||||
notifyItemInserted(0);
|
||||
}
|
||||
}
|
||||
|
||||
public void initiallyLoadCommentsFailed() {
|
||||
isInitiallyLoading = false;
|
||||
isInitiallyLoadingFailed = true;
|
||||
notifyItemChanged(1);
|
||||
notifyItemChanged(0);
|
||||
}
|
||||
|
||||
public void loadMoreCommentsFailed() {
|
||||
loadMoreCommentsFailed = true;
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemChanged(mVisibleComments.size() + 1);
|
||||
} else {
|
||||
notifyItemChanged(mVisibleComments.size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -933,9 +933,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
|
||||
mVisibleComments.get(position).setCommentMarkdown(commentContentMarkdown);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(position + 2);
|
||||
} else {
|
||||
notifyItemChanged(position + 1);
|
||||
} else {
|
||||
notifyItemChanged(position);
|
||||
}
|
||||
}
|
||||
|
||||
@ -945,16 +945,16 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.get(position).setAuthor("[deleted]");
|
||||
mVisibleComments.get(position).setCommentMarkdown("[deleted]");
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(position + 2);
|
||||
} else {
|
||||
notifyItemChanged(position + 1);
|
||||
} else {
|
||||
notifyItemChanged(position);
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.remove(position);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(position + 2);
|
||||
} else {
|
||||
notifyItemRemoved(position + 1);
|
||||
} else {
|
||||
notifyItemRemoved(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1160,6 +1160,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
authorFlairTextView.setOnClickListener(view -> authorTextView.performClick());
|
||||
|
||||
moreButton.setOnClickListener(view -> {
|
||||
getItemCount();
|
||||
Comment comment = getCurrentComment(this);
|
||||
if (comment != null) {
|
||||
Bundle bundle = new Bundle();
|
||||
@ -1447,9 +1448,9 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.addAll(commentPosition + 1, newList);
|
||||
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(commentPosition + 3, newList.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(commentPosition + 2, newList.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(commentPosition + 1, newList.size());
|
||||
}
|
||||
expandButton.setImageResource(R.drawable.ic_expand_less_grey_24dp);
|
||||
}
|
||||
@ -1578,11 +1579,11 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
||||
mVisibleComments.addAll(commentPosition + 1, newList);
|
||||
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(commentPosition + 2);
|
||||
notifyItemRangeInserted(commentPosition + 3, newList.size());
|
||||
} else {
|
||||
notifyItemChanged(commentPosition + 1);
|
||||
notifyItemRangeInserted(commentPosition + 2, newList.size());
|
||||
} else {
|
||||
notifyItemChanged(commentPosition);
|
||||
notifyItemRangeInserted(commentPosition + 1, newList.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -127,15 +127,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
private static final int VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK = 6;
|
||||
private static final int VIEW_TYPE_POST_DETAIL_GALLERY = 7;
|
||||
private static final int VIEW_TYPE_POST_DETAIL_TEXT_TYPE = 8;
|
||||
private static final int VIEW_TYPE_FIRST_LOADING = 9;
|
||||
private static final int VIEW_TYPE_FIRST_LOADING_FAILED = 10;
|
||||
private static final int VIEW_TYPE_NO_COMMENT_PLACEHOLDER = 11;
|
||||
private static final int VIEW_TYPE_COMMENT = 12;
|
||||
private static final int VIEW_TYPE_COMMENT_FULLY_COLLAPSED = 13;
|
||||
private static final int VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS = 14;
|
||||
private static final int VIEW_TYPE_IS_LOADING_MORE_COMMENTS = 15;
|
||||
private static final int VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED = 16;
|
||||
private static final int VIEW_TYPE_VIEW_ALL_COMMENTS = 17;
|
||||
|
||||
private AppCompatActivity mActivity;
|
||||
private ViewPostDetailFragment mFragment;
|
||||
@ -446,91 +437,35 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == 0) {
|
||||
switch (mPost.getPostType()) {
|
||||
case Post.VIDEO_TYPE:
|
||||
if (mAutoplay) {
|
||||
if (!mAutoplayNsfwVideos && mPost.isNSFW()) {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AUTOPLAY;
|
||||
} else {
|
||||
switch (mPost.getPostType()) {
|
||||
case Post.VIDEO_TYPE:
|
||||
if (mAutoplay) {
|
||||
if (!mAutoplayNsfwVideos && mPost.isNSFW()) {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
case Post.GIF_TYPE:
|
||||
if (mAutoplay) {
|
||||
if (!mAutoplayNsfwVideos && mPost.isNSFW()) {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
return VIEW_TYPE_POST_DETAIL_GIF_AUTOPLAY;
|
||||
} else {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AUTOPLAY;
|
||||
} else {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
case Post.GIF_TYPE:
|
||||
if (mAutoplay) {
|
||||
if (!mAutoplayNsfwVideos && mPost.isNSFW()) {
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
case Post.IMAGE_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_IMAGE;
|
||||
case Post.LINK_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_LINK;
|
||||
case Post.NO_PREVIEW_LINK_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK;
|
||||
case Post.GALLERY_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_GALLERY;
|
||||
default:
|
||||
return VIEW_TYPE_POST_DETAIL_TEXT_TYPE;
|
||||
}
|
||||
}
|
||||
|
||||
if (mVisibleComments.size() == 0) {
|
||||
if (position == 1) {
|
||||
if (isInitiallyLoading) {
|
||||
return VIEW_TYPE_FIRST_LOADING;
|
||||
} else if (isInitiallyLoadingFailed) {
|
||||
return VIEW_TYPE_FIRST_LOADING_FAILED;
|
||||
return VIEW_TYPE_POST_DETAIL_GIF_AUTOPLAY;
|
||||
} else {
|
||||
return VIEW_TYPE_NO_COMMENT_PLACEHOLDER;
|
||||
return VIEW_TYPE_POST_DETAIL_VIDEO_AND_GIF_PREVIEW;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
if (position == 1) {
|
||||
return VIEW_TYPE_VIEW_ALL_COMMENTS;
|
||||
}
|
||||
|
||||
if (position == mVisibleComments.size() + 2) {
|
||||
if (mHasMoreComments) {
|
||||
return VIEW_TYPE_IS_LOADING_MORE_COMMENTS;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
Comment comment = mVisibleComments.get(position - 2);
|
||||
if (comment.getPlaceholderType() == Comment.NOT_PLACEHOLDER) {
|
||||
if (mFullyCollapseComment && !comment.isExpanded() && comment.hasExpandedBefore()) {
|
||||
return VIEW_TYPE_COMMENT_FULLY_COLLAPSED;
|
||||
}
|
||||
return VIEW_TYPE_COMMENT;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS;
|
||||
}
|
||||
} else {
|
||||
if (position == mVisibleComments.size() + 1) {
|
||||
if (mHasMoreComments) {
|
||||
return VIEW_TYPE_IS_LOADING_MORE_COMMENTS;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_COMMENTS_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
Comment comment = mVisibleComments.get(position - 1);
|
||||
if (comment.getPlaceholderType() == Comment.NOT_PLACEHOLDER) {
|
||||
if (mFullyCollapseComment && !comment.isExpanded() && comment.hasExpandedBefore()) {
|
||||
return VIEW_TYPE_COMMENT_FULLY_COLLAPSED;
|
||||
}
|
||||
return VIEW_TYPE_COMMENT;
|
||||
} else {
|
||||
return VIEW_TYPE_LOAD_MORE_CHILD_COMMENTS;
|
||||
}
|
||||
case Post.IMAGE_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_IMAGE;
|
||||
case Post.LINK_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_LINK;
|
||||
case Post.NO_PREVIEW_LINK_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_NO_PREVIEW_LINK;
|
||||
case Post.GALLERY_TYPE:
|
||||
return VIEW_TYPE_POST_DETAIL_GALLERY;
|
||||
default:
|
||||
return VIEW_TYPE_POST_DETAIL_TEXT_TYPE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1065,224 +1000,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
notifyItemChanged(0);
|
||||
}
|
||||
|
||||
private int getParentPosition(int position) {
|
||||
if (position >= 0 && position < mVisibleComments.size()) {
|
||||
int childDepth = mVisibleComments.get(position).getDepth();
|
||||
for (int i = position; i >= 0; i--) {
|
||||
if (mVisibleComments.get(i).getDepth() < childDepth) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private void expandChildren(ArrayList<Comment> comments, ArrayList<Comment> newList, int position) {
|
||||
if (comments != null && comments.size() > 0) {
|
||||
newList.addAll(position, comments);
|
||||
for (int i = 0; i < comments.size(); i++) {
|
||||
position++;
|
||||
if (comments.get(i).getChildren() != null && comments.get(i).getChildren().size() > 0) {
|
||||
expandChildren(comments.get(i).getChildren(), newList, position);
|
||||
position = position + comments.get(i).getChildren().size();
|
||||
}
|
||||
comments.get(i).setExpanded(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void collapseChildren(int position) {
|
||||
mVisibleComments.get(position).setExpanded(false);
|
||||
int depth = mVisibleComments.get(position).getDepth();
|
||||
int allChildrenSize = 0;
|
||||
for (int i = position + 1; i < mVisibleComments.size(); i++) {
|
||||
if (mVisibleComments.get(i).getDepth() > depth) {
|
||||
allChildrenSize++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (allChildrenSize > 0) {
|
||||
mVisibleComments.subList(position + 1, position + 1 + allChildrenSize).clear();
|
||||
}
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
if (mFullyCollapseComment) {
|
||||
notifyItemChanged(position + 2);
|
||||
}
|
||||
notifyItemRangeRemoved(position + 3, allChildrenSize);
|
||||
} else {
|
||||
if (mFullyCollapseComment) {
|
||||
notifyItemChanged(position + 1);
|
||||
}
|
||||
notifyItemRangeRemoved(position + 2, allChildrenSize);
|
||||
}
|
||||
}
|
||||
|
||||
public void addComments(@NonNull ArrayList<Comment> comments, boolean hasMoreComments) {
|
||||
if (mVisibleComments.size() == 0) {
|
||||
isInitiallyLoading = false;
|
||||
isInitiallyLoadingFailed = false;
|
||||
if (comments.size() == 0) {
|
||||
notifyItemChanged(1);
|
||||
} else {
|
||||
notifyItemRemoved(1);
|
||||
}
|
||||
}
|
||||
|
||||
int sizeBefore = mVisibleComments.size();
|
||||
mVisibleComments.addAll(comments);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeInserted(sizeBefore + 2, comments.size());
|
||||
} else {
|
||||
notifyItemRangeInserted(sizeBefore + 1, comments.size());
|
||||
}
|
||||
|
||||
if (mHasMoreComments != hasMoreComments) {
|
||||
if (hasMoreComments) {
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemInserted(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemInserted(mVisibleComments.size() + 1);
|
||||
}
|
||||
} else {
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemRemoved(mVisibleComments.size() + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
mHasMoreComments = hasMoreComments;
|
||||
}
|
||||
|
||||
public void addComment(Comment comment) {
|
||||
if (mVisibleComments.size() == 0 || isInitiallyLoadingFailed) {
|
||||
notifyItemRemoved(1);
|
||||
}
|
||||
|
||||
mVisibleComments.add(0, comment);
|
||||
|
||||
if (isInitiallyLoading) {
|
||||
notifyItemInserted(2);
|
||||
} else {
|
||||
notifyItemInserted(1);
|
||||
}
|
||||
}
|
||||
|
||||
public void addChildComment(Comment comment, String parentFullname, int parentPosition) {
|
||||
if (!parentFullname.equals(mVisibleComments.get(parentPosition).getFullName())) {
|
||||
for (int i = 0; i < mVisibleComments.size(); i++) {
|
||||
if (parentFullname.equals(mVisibleComments.get(i).getFullName())) {
|
||||
parentPosition = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mVisibleComments.get(parentPosition).addChild(comment);
|
||||
mVisibleComments.get(parentPosition).setHasReply(true);
|
||||
if (!mVisibleComments.get(parentPosition).isExpanded()) {
|
||||
ArrayList<Comment> newList = new ArrayList<>();
|
||||
expandChildren(mVisibleComments.get(parentPosition).getChildren(), newList, 0);
|
||||
mVisibleComments.get(parentPosition).setExpanded(true);
|
||||
mVisibleComments.addAll(parentPosition + 1, newList);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(parentPosition + 2);
|
||||
notifyItemRangeInserted(parentPosition + 3, newList.size());
|
||||
} else {
|
||||
notifyItemChanged(parentPosition + 1);
|
||||
notifyItemRangeInserted(parentPosition + 2, newList.size());
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.add(parentPosition + 1, comment);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemInserted(parentPosition + 3);
|
||||
} else {
|
||||
notifyItemInserted(parentPosition + 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setSingleComment(String singleCommentId, boolean isSingleCommentThreadMode) {
|
||||
mSingleCommentId = singleCommentId;
|
||||
mIsSingleCommentThreadMode = isSingleCommentThreadMode;
|
||||
}
|
||||
|
||||
public ArrayList<Comment> getVisibleComments() {
|
||||
return mVisibleComments;
|
||||
}
|
||||
|
||||
public void initiallyLoading() {
|
||||
if (mVisibleComments.size() != 0) {
|
||||
int previousSize = mVisibleComments.size();
|
||||
mVisibleComments.clear();
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRangeRemoved(1, previousSize + 1);
|
||||
} else {
|
||||
notifyItemRangeRemoved(1, previousSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (isInitiallyLoading || isInitiallyLoadingFailed || mVisibleComments.size() == 0) {
|
||||
isInitiallyLoading = true;
|
||||
isInitiallyLoadingFailed = false;
|
||||
notifyItemChanged(1);
|
||||
} else {
|
||||
isInitiallyLoading = true;
|
||||
isInitiallyLoadingFailed = false;
|
||||
notifyItemInserted(1);
|
||||
}
|
||||
}
|
||||
|
||||
public void initiallyLoadCommentsFailed() {
|
||||
isInitiallyLoading = false;
|
||||
isInitiallyLoadingFailed = true;
|
||||
notifyItemChanged(1);
|
||||
}
|
||||
|
||||
public void loadMoreCommentsFailed() {
|
||||
loadMoreCommentsFailed = true;
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(mVisibleComments.size() + 2);
|
||||
} else {
|
||||
notifyItemChanged(mVisibleComments.size() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void editComment(String commentAuthor, String commentContentMarkdown, int position) {
|
||||
if (commentAuthor != null)
|
||||
mVisibleComments.get(position).setAuthor(commentAuthor);
|
||||
|
||||
mVisibleComments.get(position).setCommentMarkdown(commentContentMarkdown);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(position + 2);
|
||||
} else {
|
||||
notifyItemChanged(position + 1);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteComment(int position) {
|
||||
if (mVisibleComments != null && position >= 0 && position < mVisibleComments.size()) {
|
||||
if (mVisibleComments.get(position).hasReply()) {
|
||||
mVisibleComments.get(position).setAuthor("[deleted]");
|
||||
mVisibleComments.get(position).setCommentMarkdown("[deleted]");
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemChanged(position + 2);
|
||||
} else {
|
||||
notifyItemChanged(position + 1);
|
||||
}
|
||||
} else {
|
||||
mVisibleComments.remove(position);
|
||||
if (mIsSingleCommentThreadMode) {
|
||||
notifyItemRemoved(position + 2);
|
||||
} else {
|
||||
notifyItemRemoved(position + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits(boolean needBlurNsfw, boolean doNotBlurNsfwInNsfwSubreddits) {
|
||||
mNeedBlurNsfw = needBlurNsfw;
|
||||
mDoNotBlurNsfwInNsfwSubreddits = doNotBlurNsfwInNsfwSubreddits;
|
||||
@ -2044,7 +1761,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
||||
|
||||
@Override
|
||||
public int getPlayerOrder() {
|
||||
return getBindingAdapterPosition();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@ -126,8 +127,9 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
|
||||
@BindView(R.id.swipe_refresh_layout_view_post_detail_fragment)
|
||||
SwipeRefreshLayout mSwipeRefreshLayout;
|
||||
@BindView(R.id.recycler_view_view_post_detail_fragment)
|
||||
@BindView(R.id.post_detail_recycler_view_view_post_detail_fragment)
|
||||
CustomToroContainer mRecyclerView;
|
||||
RecyclerView mCommentsRecyclerView;
|
||||
@BindView(R.id.fetch_post_info_linear_layout_view_post_detail_fragment)
|
||||
LinearLayout mFetchPostInfoLinearLayout;
|
||||
@BindView(R.id.fetch_post_info_image_view_view_post_detail_fragment)
|
||||
@ -216,7 +218,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
private LinearLayoutManager mLinearLayoutManager;
|
||||
private ConcatAdapter mConcatAdapter;
|
||||
private PostDetailRecyclerViewAdapter mPostAdapter;
|
||||
private CommentsRecyclerViewAdapter mCommentAdapter;
|
||||
private CommentsRecyclerViewAdapter mCommentsAdapter;
|
||||
private RecyclerView.SmoothScroller mSmoothScroller;
|
||||
private Drawable mSavedIcon;
|
||||
private Drawable mUnsavedIcon;
|
||||
@ -277,8 +279,15 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
mGlide = Glide.with(this);
|
||||
mLocale = getResources().getConfiguration().locale;
|
||||
|
||||
mLinearLayoutManager = new LinearLayoutManager(activity);
|
||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
if (getResources().getBoolean(R.bool.isTablet) || getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
mLinearLayoutManager = new LinearLayoutManager(activity);
|
||||
mCommentsRecyclerView = rootView.findViewById(R.id.comments_recycler_view_view_post_detail_fragment);
|
||||
mCommentsRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(activity));
|
||||
} else {
|
||||
mLinearLayoutManager = new LinearLayoutManager(activity);
|
||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||
}
|
||||
|
||||
if (children != null && children.size() > 0) {
|
||||
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
@ -391,8 +400,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
if (touchHelper != null) {
|
||||
touchHelper.attachToRecyclerView(null);
|
||||
touchHelper.attachToRecyclerView(mRecyclerView);
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.onItemSwipe(viewHolder, direction, swipeLeftAction, swipeRightAction);
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.onItemSwipe(viewHolder, direction, swipeLeftAction, swipeRightAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -531,7 +540,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
}
|
||||
});
|
||||
mCommentAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||
this, mCustomThemeWrapper, mRetrofit, mOauthRetrofit,
|
||||
mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId,
|
||||
isSingleCommentThreadMode, mSharedPreferences,
|
||||
@ -549,8 +558,14 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
fetchMoreComments();
|
||||
}
|
||||
});
|
||||
mConcatAdapter = new ConcatAdapter(mPostAdapter, mCommentAdapter);
|
||||
mRecyclerView.setAdapter(mConcatAdapter);
|
||||
if (mCommentsRecyclerView != null) {
|
||||
mRecyclerView.setAdapter(mPostAdapter);
|
||||
mCommentsRecyclerView.setAdapter(mCommentsAdapter);
|
||||
} else {
|
||||
mConcatAdapter = new ConcatAdapter(mPostAdapter, mCommentsAdapter);
|
||||
mRecyclerView.setAdapter(mConcatAdapter);
|
||||
}
|
||||
|
||||
|
||||
if (comments == null) {
|
||||
fetchCommentsRespectRecommendedSort(false);
|
||||
@ -561,7 +576,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
} else if (isFetchingComments) {
|
||||
fetchCommentsRespectRecommendedSort(false);
|
||||
} else {
|
||||
mCommentAdapter.addComments(comments, hasMoreChildren);
|
||||
mCommentsAdapter.addComments(comments, hasMoreChildren);
|
||||
if (isLoadingMoreChildren) {
|
||||
isLoadingMoreChildren = false;
|
||||
fetchMoreComments();
|
||||
@ -670,28 +685,28 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
}
|
||||
|
||||
public void addComment(Comment comment) {
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.addComment(comment);
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.addComment(comment);
|
||||
}
|
||||
}
|
||||
|
||||
public void addChildComment(Comment comment, String parentFullname, int parentPosition) {
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.addChildComment(comment, parentFullname, parentPosition);
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.addChildComment(comment, parentFullname, parentPosition);
|
||||
}
|
||||
}
|
||||
|
||||
public void editComment(String commentAuthor, String commentContentMarkdown, int position) {
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.editComment(commentAuthor,
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.editComment(commentAuthor,
|
||||
commentContentMarkdown,
|
||||
position);
|
||||
}
|
||||
}
|
||||
|
||||
public void awardGiven(String awardsHTML, int awardCount, int position) {
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.giveAward(awardsHTML, awardCount, position);
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.giveAward(awardsHTML, awardCount, position);
|
||||
}
|
||||
}
|
||||
|
||||
@ -743,8 +758,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
}
|
||||
|
||||
public void saveComment(int position, boolean isSaved) {
|
||||
if (mCommentAdapter != null) {
|
||||
mCommentAdapter.setSaveComment(position, isSaved);
|
||||
if (mCommentsAdapter != null) {
|
||||
mCommentsAdapter.setSaveComment(position, isSaved);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1009,7 +1024,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (mCommentAdapter != null && mRecyclerView != null) {
|
||||
if (mRecyclerView != null) {
|
||||
mRecyclerView.onWindowVisibilityChanged(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
@ -1017,7 +1032,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (mCommentAdapter != null && mRecyclerView != null) {
|
||||
if (mRecyclerView != null) {
|
||||
mRecyclerView.onWindowVisibilityChanged(View.GONE);
|
||||
}
|
||||
}
|
||||
@ -1025,7 +1040,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
@Override
|
||||
public void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
comments = mCommentAdapter == null ? null : mCommentAdapter.getVisibleComments();
|
||||
comments = mCommentsAdapter == null ? null : mCommentsAdapter.getVisibleComments();
|
||||
Bridge.saveInstanceState(this, outState);
|
||||
}
|
||||
|
||||
@ -1107,7 +1122,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
}
|
||||
});
|
||||
|
||||
mCommentAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||
ViewPostDetailFragment.this, mCustomThemeWrapper, mRetrofit, mOauthRetrofit,
|
||||
mAccessToken, mAccountName, mPost, mLocale,
|
||||
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences,
|
||||
@ -1125,8 +1140,13 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
fetchMoreComments();
|
||||
}
|
||||
});
|
||||
mConcatAdapter = new ConcatAdapter(mPostAdapter, mCommentAdapter);
|
||||
mRecyclerView.setAdapter(mConcatAdapter);
|
||||
if (mCommentsRecyclerView != null) {
|
||||
mRecyclerView.setAdapter(mPostAdapter);
|
||||
mCommentsRecyclerView.setAdapter(mCommentsAdapter);
|
||||
} else {
|
||||
mConcatAdapter = new ConcatAdapter(mPostAdapter, mCommentsAdapter);
|
||||
mRecyclerView.setAdapter(mConcatAdapter);
|
||||
}
|
||||
|
||||
if (mRespectSubredditRecommendedSortType) {
|
||||
fetchCommentsRespectRecommendedSort(false);
|
||||
@ -1138,7 +1158,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
ViewPostDetailFragment.this.children = moreChildrenFullnames;
|
||||
|
||||
hasMoreChildren = children.size() != 0;
|
||||
mCommentAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
mCommentsAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
|
||||
if (children.size() > 0) {
|
||||
mRecyclerView.clearOnScrollListeners();
|
||||
@ -1189,7 +1209,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
|
||||
@Override
|
||||
public void onParseCommentFailed() {
|
||||
mCommentAdapter.initiallyLoadCommentsFailed();
|
||||
mCommentsAdapter.initiallyLoadCommentsFailed();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -1251,8 +1271,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
|
||||
private void fetchComments(boolean changeRefreshState, boolean checkSortState, String sortType) {
|
||||
isFetchingComments = true;
|
||||
mCommentAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
||||
mCommentAdapter.initiallyLoading();
|
||||
mCommentsAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
||||
mCommentsAdapter.initiallyLoading();
|
||||
String commentId = null;
|
||||
if (isSingleCommentThreadMode) {
|
||||
commentId = mSingleCommentId;
|
||||
@ -1276,7 +1296,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
|
||||
comments = expandedComments;
|
||||
hasMoreChildren = children.size() != 0;
|
||||
mCommentAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
mCommentsAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
|
||||
if (children.size() > 0) {
|
||||
mRecyclerView.clearOnScrollListeners();
|
||||
@ -1341,7 +1361,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
return;
|
||||
}
|
||||
|
||||
mCommentAdapter.initiallyLoadCommentsFailed();
|
||||
mCommentsAdapter.initiallyLoadCommentsFailed();
|
||||
if (changeRefreshState) {
|
||||
isRefreshing = false;
|
||||
}
|
||||
@ -1366,7 +1386,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
@Override
|
||||
public void onFetchMoreCommentSuccess(ArrayList<Comment> expandedComments, int childrenStartingIndex) {
|
||||
hasMoreChildren = childrenStartingIndex < children.size();
|
||||
mCommentAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
mCommentsAdapter.addComments(expandedComments, hasMoreChildren);
|
||||
mChildrenStartingIndex = childrenStartingIndex;
|
||||
isLoadingMoreChildren = false;
|
||||
loadMoreChildrenSuccess = true;
|
||||
@ -1376,7 +1396,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
public void onFetchMoreCommentFailed() {
|
||||
isLoadingMoreChildren = false;
|
||||
loadMoreChildrenSuccess = false;
|
||||
mCommentAdapter.loadMoreCommentsFailed();
|
||||
mCommentsAdapter.loadMoreCommentsFailed();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -1599,7 +1619,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
@Override
|
||||
public void deleteSuccess() {
|
||||
Toast.makeText(activity, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
||||
mCommentAdapter.deleteComment(position);
|
||||
mCommentsAdapter.deleteComment(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1619,7 +1639,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
new FetchRemovedComment.FetchRemovedCommentListener() {
|
||||
@Override
|
||||
public void fetchSuccess(Comment comment) {
|
||||
mCommentAdapter.editComment(comment.getAuthor(), comment.getCommentMarkdown(), position);
|
||||
mCommentsAdapter.editComment(comment.getAuthor(), comment.getCommentMarkdown(), position);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1639,8 +1659,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
public void scrollToNextParentComment() {
|
||||
if (mLinearLayoutManager != null) {
|
||||
int currentPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||
if (mCommentAdapter != null) {
|
||||
int nextParentPosition = mCommentAdapter.getNextParentCommentPosition(currentPosition);
|
||||
if (mCommentsAdapter != null) {
|
||||
int nextParentPosition = mCommentsAdapter.getNextParentCommentPosition(currentPosition);
|
||||
if (nextParentPosition < 0) {
|
||||
return;
|
||||
}
|
||||
@ -1656,8 +1676,8 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
public void scrollToPreviousParentComment() {
|
||||
if (mLinearLayoutManager != null) {
|
||||
int currentPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||
if (mCommentAdapter != null) {
|
||||
int nextParentPosition = mCommentAdapter.getPreviousParentCommentPosition(currentPosition);
|
||||
if (mCommentsAdapter != null) {
|
||||
int nextParentPosition = mCommentsAdapter.getPreviousParentCommentPosition(currentPosition);
|
||||
if (nextParentPosition < 0) {
|
||||
return;
|
||||
}
|
||||
@ -1725,7 +1745,11 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
if (mPostAdapter != null) {
|
||||
mPostAdapter.setBlurNsfwAndDoNotBlurNsfwInNsfwSubreddits(event.needBlurNSFW, event.doNotBlurNsfwInNsfwSubreddits);
|
||||
}
|
||||
refreshAdapter();
|
||||
if (mCommentsRecyclerView != null) {
|
||||
refreshAdapter(mRecyclerView, mConcatAdapter);
|
||||
} else {
|
||||
refreshAdapter(mRecyclerView, mPostAdapter);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@ -1733,23 +1757,27 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
if (mPostAdapter != null) {
|
||||
mPostAdapter.setBlurSpoiler(event.needBlurSpoiler);
|
||||
}
|
||||
refreshAdapter();
|
||||
if (mCommentsRecyclerView != null) {
|
||||
refreshAdapter(mRecyclerView, mConcatAdapter);
|
||||
} else {
|
||||
refreshAdapter(mRecyclerView, mPostAdapter);
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshAdapter() {
|
||||
private void refreshAdapter(RecyclerView recyclerView, RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) {
|
||||
int previousPosition = -1;
|
||||
if (mLinearLayoutManager != null) {
|
||||
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||
if (recyclerView.getLayoutManager() != null) {
|
||||
previousPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
|
||||
}
|
||||
|
||||
RecyclerView.LayoutManager layoutManager = mRecyclerView.getLayoutManager();
|
||||
mRecyclerView.setAdapter(null);
|
||||
mRecyclerView.setLayoutManager(null);
|
||||
mRecyclerView.setAdapter(mConcatAdapter);
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
|
||||
recyclerView.setAdapter(null);
|
||||
recyclerView.setLayoutManager(null);
|
||||
recyclerView.setAdapter(adapter);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
|
||||
if (previousPosition > 0) {
|
||||
mRecyclerView.scrollToPosition(previousPosition);
|
||||
recyclerView.scrollToPosition(previousPosition);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1769,7 +1797,11 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
||||
}
|
||||
|
||||
if (stateChanged) {
|
||||
refreshAdapter();
|
||||
if (mCommentsRecyclerView != null) {
|
||||
refreshAdapter(mRecyclerView, mConcatAdapter);
|
||||
} else {
|
||||
refreshAdapter(mRecyclerView, mPostAdapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
65
app/src/main/res/layout-land/fragment_view_post_detail.xml
Normal file
65
app/src/main/res/layout-land/fragment_view_post_detail.xml
Normal file
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:context=".fragments.ViewPostDetailFragment">
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh_layout_view_post_detail_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.CustomToroContainer
|
||||
android:id="@+id/post_detail_recycler_view_view_post_detail_fragment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:paddingBottom="144dp"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/comments_recycler_view_view_post_detail_fragment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:paddingBottom="144dp"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fetch_post_info_linear_layout_view_post_detail_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fetch_post_info_image_view_view_post_detail_fragment"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fetch_post_info_text_view_view_post_detail_fragment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:gravity="center"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:context=".fragments.ViewPostDetailFragment">
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/swipe_refresh_layout_view_post_detail_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clickable="true"
|
||||
android:focusable="true">
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.CustomToroContainer
|
||||
android:id="@+id/post_detail_recycler_view_view_post_detail_fragment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:paddingBottom="144dp"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/comments_recycler_view_view_post_detail_fragment"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:paddingBottom="144dp"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/fetch_post_info_linear_layout_view_post_detail_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fetch_post_info_image_view_view_post_detail_fragment"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/fetch_post_info_text_view_view_post_detail_fragment"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:gravity="center"
|
||||
android:textSize="?attr/font_default"
|
||||
android:fontFamily="?attr/font_family" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
@ -13,9 +13,9 @@
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<ml.docilealligator.infinityforreddit.customviews.CustomToroContainer
|
||||
android:id="@+id/recycler_view_view_post_detail_fragment"
|
||||
android:id="@+id/post_detail_recycler_view_view_post_detail_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="144dp"
|
||||
android:clipToPadding="false" />
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user