diff options
author | Alex Ning <chineseperson5@gmail.com> | 2021-07-12 15:09:15 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2021-07-12 15:09:15 +0000 |
commit | 67416fa3e47ecac67db667906e86bf8a58b31f45 (patch) | |
tree | f8be4c013e14df6506c4566b8523dc5d4e1e8d40 /app/src/main/java/ml/docilealligator/infinityforreddit | |
parent | 8c89603f198c0912d926018c26f8856c3b59c1cd (diff) | |
download | infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar.gz infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar.bz2 infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar.lz infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar.xz infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.tar.zst infinity-for-reddit-67416fa3e47ecac67db667906e86bf8a58b31f45.zip |
Improve the experience of searching in comments.
Diffstat (limited to 'app/src/main/java/ml/docilealligator/infinityforreddit')
3 files changed, 28 insertions, 17 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java index 3dd98593..e8b6fa85 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewPostDetailActivity.java @@ -424,11 +424,13 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele } } - public void toggleSearchPanelVisibility() { + public boolean toggleSearchPanelVisibility() { if (searchPanelMaterialCardView.getVisibility() == View.GONE) { searchPanelMaterialCardView.setVisibility(View.VISIBLE); + return false; } else { searchPanelMaterialCardView.setVisibility(View.GONE); + return true; } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java index 7e00a97f..6aa38fd3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/adapters/CommentsRecyclerViewAdapter.java @@ -13,6 +13,7 @@ import android.text.Spanned; import android.text.TextPaint; import android.text.style.ClickableSpan; import android.text.util.Linkify; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -314,14 +315,12 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi @Override public int getItemViewType(int position) { if (mVisibleComments.size() == 0) { - if (position == 0) { - if (isInitiallyLoading) { - return VIEW_TYPE_FIRST_LOADING; - } else if (isInitiallyLoadingFailed) { - return VIEW_TYPE_FIRST_LOADING_FAILED; - } else { - return VIEW_TYPE_NO_COMMENT_PLACEHOLDER; - } + if (isInitiallyLoading) { + return VIEW_TYPE_FIRST_LOADING; + } else if (isInitiallyLoadingFailed) { + return VIEW_TYPE_FIRST_LOADING_FAILED; + } else { + return VIEW_TYPE_NO_COMMENT_PLACEHOLDER; } } @@ -400,6 +399,8 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi if (comment != null) { if (position == mSearchCommentIndex) { holder.itemView.setBackgroundColor(Color.parseColor("#03A9F4")); + } else { + holder.itemView.setBackgroundColor(mCommentBackgroundColor); } if (mIsSingleCommentThreadMode && comment.getId().equals(mSingleCommentId)) { holder.itemView.setBackgroundColor(mSingleCommentThreadBackgroundColor); @@ -900,13 +901,14 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi } public void initiallyLoading() { + resetCommentSearchIndex(); if (mVisibleComments.size() != 0) { int previousSize = mVisibleComments.size(); mVisibleComments.clear(); if (mIsSingleCommentThreadMode) { - notifyItemRangeRemoved(0, previousSize + 1); + notifyItemRangeRemoved(0, previousSize + ((mHasMoreComments || loadMoreCommentsFailed) ? 1 : 0) + 1); } else { - notifyItemRangeRemoved(0, previousSize); + notifyItemRangeRemoved(0, previousSize + ((mHasMoreComments || loadMoreCommentsFailed) ? 1 : 0)); } } @@ -1056,6 +1058,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi @Override public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { if (holder instanceof CommentViewHolder) { + holder.itemView.setBackgroundColor(mCommentBackgroundColor); ((CommentViewHolder) holder).authorTextView.setTextColor(mUsernameColor); ((CommentViewHolder) holder).authorFlairTextView.setVisibility(View.GONE); ((CommentViewHolder) holder).authorTextView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); @@ -1067,13 +1070,13 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi ((CommentViewHolder) holder).scoreTextView.setTextColor(mCommentIconAndInfoColor); ((CommentViewHolder) holder).downvoteButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); ((CommentViewHolder) holder).replyButton.setColorFilter(mCommentIconAndInfoColor, android.graphics.PorterDuff.Mode.SRC_IN); - ((CommentViewHolder) holder).itemView.setBackgroundColor(mCommentBackgroundColor); } } @Override public int getItemCount() { if (isInitiallyLoading || isInitiallyLoadingFailed || mVisibleComments.size() == 0) { + Log.i("adfasdf", "sds"); return 1; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java index cf84a2a6..13d19083 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/ViewPostDetailFragment.java @@ -12,6 +12,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.util.DisplayMetrics; +import android.util.Log; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; import android.view.Menu; @@ -770,18 +771,21 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic if (mCommentsAdapter != null) { ArrayList<Comment> visibleComments = mCommentsAdapter.getVisibleComments(); int currentSearchIndex = mCommentsAdapter.getSearchCommentIndex(); + if (currentSearchIndex >= 0) { + mCommentsAdapter.notifyItemChanged(currentSearchIndex); + } if (visibleComments != null) { if (searchNextComment) { for (int i = currentSearchIndex + 1; i < visibleComments.size(); i++) { if (visibleComments.get(i).getCommentRawText() != null && visibleComments.get(i).getCommentRawText().contains(query)) { if (mCommentsAdapter != null) { + mCommentsAdapter.highlightSearchResult(i); + mCommentsAdapter.notifyItemChanged(i); if (mCommentsRecyclerView == null) { mRecyclerView.smoothScrollToPosition(i + 1); } else { mCommentsRecyclerView.smoothScrollToPosition(i); } - mCommentsAdapter.highlightSearchResult(i); - mCommentsAdapter.notifyItemChanged(i); } return; } @@ -792,13 +796,13 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic for (int i = currentSearchIndex - 1; i >= 0; i--) { if (visibleComments.get(i).getCommentRawText() !=null && visibleComments.get(i).getCommentRawText().contains(query)) { if (mCommentsAdapter != null) { + mCommentsAdapter.highlightSearchResult(i); + mCommentsAdapter.notifyItemChanged(i); if (mCommentsRecyclerView == null) { mRecyclerView.smoothScrollToPosition(i + 1); } else { mCommentsRecyclerView.smoothScrollToPosition(i); } - mCommentsAdapter.highlightSearchResult(i); - mCommentsAdapter.notifyItemChanged(i); } return; } @@ -830,7 +834,9 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic public boolean onOptionsItemSelected(@NonNull MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.action_search_view_post_detail_fragment) { - activity.toggleSearchPanelVisibility(); + if (activity.toggleSearchPanelVisibility() && mCommentsAdapter != null) { + mCommentsAdapter.resetCommentSearchIndex(); + } } else if (itemId == R.id.action_refresh_view_post_detail_fragment) { refresh(true, true); return true; |