Load comments of comments one more time, just like parent-level comments.

This commit is contained in:
Alex Ning 2019-02-21 08:41:51 +08:00
parent c00aaf04b9
commit 70fcc671d8
2 changed files with 45 additions and 9 deletions

View File

@ -9,7 +9,6 @@ import android.support.annotation.NonNull;
import android.support.customtabs.CustomTabsIntent;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -111,15 +110,11 @@ class CommentMultiLevelRecyclerViewAdapter extends MultiLevelAdapter {
setExpandButton(((CommentViewHolder) holder).expandButton, commentItem.isExpanded());
} else {
((CommentViewHolder) holder).loadMoreCommentsProgressBar.setVisibility(View.VISIBLE);
FetchComment.fetchComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(),
locale, false, commentItem.getDepth(), new FetchComment.FetchCommentListener() {
FetchComment.fetchAllComment(mRetrofit, subredditNamePrefixed, article, commentItem.getId(),
locale, false, commentItem.getDepth(), new FetchComment.FetchAllCommentListener() {
@Override
public void onFetchCommentSuccess(List<?> commentData,
String parentId, String commaSeparatedChildren) {
public void onFetchAllCommentSuccess(List<?> commentData) {
commentItem.addChildren((List<RecyclerViewItem>) commentData);
for (RecyclerViewItem r : (List<RecyclerViewItem>) commentData) {
Log.i("asdfasdfasd", Integer.toString(r.getLevel()));
}
((CommentViewHolder) holder).loadMoreCommentsProgressBar
.setVisibility(View.GONE);
mMultiLevelRecyclerView.toggleItemsGroup(holder.getAdapterPosition());
@ -128,7 +123,7 @@ class CommentMultiLevelRecyclerViewAdapter extends MultiLevelAdapter {
}
@Override
public void onFetchCommentFailed() {
public void onFetchAllCommentFailed() {
((CommentViewHolder) holder).loadMoreCommentsProgressBar
.setVisibility(View.GONE);
}

View File

@ -24,6 +24,11 @@ class FetchComment {
void onFetchMoreCommentFailed();
}
interface FetchAllCommentListener {
void onFetchAllCommentSuccess(List<?> commentData);
void onFetchAllCommentFailed();
}
static void fetchComment(Retrofit retrofit, String subredditNamePrefixed, String article,
String comment, Locale locale, boolean isPost, int parentDepth,
final FetchCommentListener fetchCommentListener) {
@ -126,4 +131,40 @@ class FetchComment {
}
});
}
static void fetchAllComment(Retrofit retrofit, String subredditNamePrefixed, String article,
String comment, Locale locale, boolean isPost, int parentDepth,
FetchAllCommentListener fetchAllCommentListener) {
fetchComment(retrofit, subredditNamePrefixed, article, comment, locale, isPost, parentDepth,
new FetchCommentListener() {
@Override
public void onFetchCommentSuccess(List<?> commentData, String parentId, String commaSeparatedChildren) {
if(!commaSeparatedChildren.equals("")) {
fetchMoreComment(retrofit, subredditNamePrefixed, parentId, commaSeparatedChildren,
locale, new FetchMoreCommentListener() {
@Override
public void onFetchMoreCommentSuccess(List<?> moreCommentData) {
((ArrayList<CommentData>)commentData).addAll((ArrayList<CommentData>) moreCommentData);
fetchAllCommentListener.onFetchAllCommentSuccess(commentData);
}
@Override
public void onFetchMoreCommentFailed() {
Log.i("fetch more comment", "error");
fetchAllCommentListener.onFetchAllCommentFailed();
}
});
} else {
fetchAllCommentListener.onFetchAllCommentSuccess(commentData);
}
}
@Override
public void onFetchCommentFailed() {
Log.i("fetch comment", "error");
fetchAllCommentListener.onFetchAllCommentFailed();
}
});
}
}