aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/CommentData.java179
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java11
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java1
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java25
4 files changed, 22 insertions, 194 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentData.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentData.java
index 043c0071..6ade3dd8 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentData.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentData.java
@@ -59,7 +59,8 @@ class CommentData implements Parcelable {
hasReply = in.readByte() != 0;
scoreHidden = in.readByte() != 0;
isExpanded = in.readByte() != 0;
- in.readStringList(moreChildrenIds);
+ children = in.readArrayList(null);
+ moreChildrenIds = in.readArrayList(null);
}
public static final Creator<CommentData> CREATOR = new Creator<CommentData>() {
@@ -200,179 +201,7 @@ class CommentData implements Parcelable {
parcel.writeByte((byte) (hasReply ? 1 : 0));
parcel.writeByte((byte) (scoreHidden ? 1 : 0));
parcel.writeByte((byte) (isExpanded ? 1 : 0));
- parcel.writeStringList(moreChildrenIds);
+ parcel.writeList(children);
+ parcel.writeList(moreChildrenIds);
}
}
-
-/*class CommentData extends RecyclerViewItem implements Parcelable {
- private String id;
- private String fullName;
- private String author;
- private String commentTime;
- private String commentContent;
- private String parentId;
- private int score;
- private int voteType;
- private boolean isSubmitter;
- private String permalink;
- private int depth;
- private boolean collapsed;
- private boolean hasReply;
- private boolean scoreHidden;
- private ArrayList<String> moreChildrenIds;
-
- CommentData(String id, String fullName, String author, String commentTime, String commentContent,
- String parentId, int score, boolean isSubmitter, String permalink, int depth,
- boolean collapsed, boolean hasReply, boolean scoreHidden) {
- super(depth);
- this.id = id;
- this.fullName = fullName;
- this.author = author;
- this.commentTime = commentTime;
- this.commentContent = commentContent;
- this.parentId = parentId;
- this.score = score;
- this.isSubmitter = isSubmitter;
- this.permalink = RedditUtils.API_BASE_URI + permalink;
- this.depth = depth;
- this.collapsed = collapsed;
- this.hasReply = hasReply;
- this.scoreHidden = scoreHidden;
- }
-
- protected CommentData(Parcel in) {
- super(0);
- id = in.readString();
- fullName = in.readString();
- author = in.readString();
- commentTime = in.readString();
- commentContent = in.readString();
- parentId = in.readString();
- score = in.readInt();
- voteType = in.readInt();
- isSubmitter = in.readByte() != 0;
- permalink = in.readString();
- depth = in.readInt();
- collapsed = in.readByte() != 0;
- hasReply = in.readByte() != 0;
- scoreHidden = in.readByte() != 0;
- in.readStringList(moreChildrenIds);
- super.setLevel(depth);
- }
-
- public static final Creator<CommentData> CREATOR = new Creator<CommentData>() {
- @Override
- public CommentData createFromParcel(Parcel in) {
- return new CommentData(in);
- }
-
- @Override
- public CommentData[] newArray(int size) {
- return new CommentData[size];
- }
- };
-
- public String getId() {
- return id;
- }
-
- public String getFullName() {
- return fullName;
- }
-
- public String getAuthor() {
- return author;
- }
-
- public String getCommentTime() {
- return commentTime;
- }
-
- public String getCommentContent() {
- return commentContent;
- }
-
- public String getParentId() {
- return parentId;
- }
-
- public void setParentId(String parentId) {
- this.parentId = parentId;
- }
-
- public int getScore() {
- return score;
- }
-
- public void setScore(int score) {
- this.score = score;
- }
-
- public boolean isSubmitter() {
- return isSubmitter;
- }
-
- public String getPermalink() {
- return permalink;
- }
-
- public int getDepth() {
- return depth;
- }
-
- public boolean isCollapsed() {
- return collapsed;
- }
-
- public boolean hasReply() {
- return hasReply;
- }
-
- public void setHasReply(boolean hasReply) {
- this.hasReply = hasReply;
- }
-
- public boolean isScoreHidden() {
- return scoreHidden;
- }
-
- public int getVoteType() {
- return voteType;
- }
-
- public void setVoteType(int voteType) {
- this.voteType = voteType;
- }
-
- public ArrayList<String> getMoreChildrenIds() {
- return moreChildrenIds;
- }
-
- public void setMoreChildrenIds(ArrayList<String> moreChildrenIds) {
- this.moreChildrenIds = moreChildrenIds;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int i) {
- parcel.writeString(id);
- parcel.writeString(fullName);
- parcel.writeString(author);
- parcel.writeString(commentTime);
- parcel.writeString(commentContent);
- parcel.writeString(parentId);
- parcel.writeInt(score);
- parcel.writeInt(voteType);
- parcel.writeByte((byte) (isSubmitter ? 1 : 0));
- parcel.writeString(permalink);
- parcel.writeInt(depth);
- parcel.writeByte((byte) (collapsed ? 1 : 0));
- parcel.writeByte((byte) (hasReply ? 1 : 0));
- parcel.writeByte((byte) (scoreHidden ? 1 : 0));
- parcel.writeStringList(moreChildrenIds);
- }
-}*/
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java
index e9da8bde..260bb5bf 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java
@@ -56,6 +56,7 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
mLocale = locale;
mVisibleComments = new ArrayList<>();
+
new Handler().post(() -> {
makeChildrenVisible(commentData, mVisibleComments);
notifyDataSetChanged();
@@ -80,7 +81,7 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
- final CommentData commentItem = mVisibleComments.get(position);
+ CommentData commentItem = mVisibleComments.get(holder.getAdapterPosition());
String authorPrefixed = "u/" + commentItem.getAuthor();
((CommentViewHolder) holder).authorTextView.setText(authorPrefixed);
@@ -327,9 +328,9 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
notifyItemRangeInserted(sizeBefore, comments.size());
}
- //Need proper implementation
void addComment(CommentData comment) {
mCommentData.add(0, comment);
+ mVisibleComments.add(0, comment);
notifyItemInserted(0);
}
@@ -345,6 +346,12 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
notifyItemChanged(parentPosition);
}
+ void clearData() {
+ mCommentData.clear();
+ mVisibleComments.clear();
+ notifyDataSetChanged();
+ }
+
@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
if (holder instanceof CommentViewHolder) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
index 7f582214..e2a5569f 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
@@ -84,7 +84,6 @@ class FetchComment {
}
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
- //final int finalStartingIndex = startingIndex + 100;
RedditAPI api = retrofit.create(RedditAPI.class);
Call<String> moreChildrenBasicInfo = api.getMoreChildren(mParentId, stringBuilder.toString());
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
index 3c3db7b5..95a9ba0e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
@@ -85,7 +85,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
private boolean isLoadingMoreChildren = false;
private boolean isRefreshing = false;
- private ArrayList<CommentData> mCommentsData;
private ArrayList<String> children;
private int mChildrenStartingIndex = 0;
@@ -167,8 +166,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
postListPosition = getIntent().getExtras().getInt(EXTRA_POST_LIST_POSITION);
}
- mCommentsData = new ArrayList<>();
-
mRecyclerView.setNestedScrollingEnabled(false);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
@@ -507,15 +504,9 @@ public class ViewPostDetailActivity extends AppCompatActivity {
String parentId, ArrayList<String> children) {
ViewPostDetailActivity.this.children = children;
mCommentProgressbar.setVisibility(View.GONE);
- mCommentsData.addAll(commentsData);
- if (mCommentsData.size() > 0) {
+ if (commentsData.size() > 0) {
if(mAdapter == null) {
- mAdapter = new CommentRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
- mOauthRetrofit, mSharedPreferences, commentsData, mRecyclerView,
- mPost.getSubredditNamePrefixed(), mPost.getId(), mLocale);
- mRecyclerView.setAdapter(mAdapter);
-
mNestedScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> {
if(!isLoadingMoreChildren) {
View view = mNestedScrollView.getChildAt(mNestedScrollView.getChildCount() - 1);
@@ -526,10 +517,13 @@ public class ViewPostDetailActivity extends AppCompatActivity {
}
}
});
- } else {
- mAdapter.notifyDataSetChanged();
}
+ mAdapter = new CommentRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
+ mOauthRetrofit, mSharedPreferences, commentsData, mRecyclerView,
+ mPost.getSubredditNamePrefixed(), mPost.getId(), mLocale);
+ mRecyclerView.setAdapter(mAdapter);
+
mCommentCardView.setVisibility(View.VISIBLE);
} else {
mNoCommentWrapperLinearLayout.setVisibility(View.VISIBLE);
@@ -627,11 +621,10 @@ public class ViewPostDetailActivity extends AppCompatActivity {
private void refresh() {
if(!isRefreshing) {
isRefreshing = true;
+ mChildrenStartingIndex = 0;
- if(mAdapter != null && mCommentsData != null) {
- int size = mCommentsData.size();
- mCommentsData.clear();
- mAdapter.notifyItemRangeRemoved(0, size);
+ if(mAdapter != null) {
+ mAdapter.clearData();
}
fetchComment();