diff options
author | Alex Ning <chineseperson5@gmail.com> | 2018-08-20 16:08:48 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2018-08-20 16:08:48 +0000 |
commit | 80058ff6ab192b830b39566ee07a5903c450cf6c (patch) | |
tree | 154cac141fd52fd7c2ec7054113372a09732d808 /app | |
parent | 0fa03cba2150a2225677d6abe611c63510e428ee (diff) | |
download | infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar.gz infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar.bz2 infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar.lz infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar.xz infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.tar.zst infinity-for-reddit-80058ff6ab192b830b39566ee07a5903c450cf6c.zip |
Load comment and post content text in HTML form instead of String. Fixed a bug that the icon of subreddits was not parsed properly in ParseSubredditData class.
Diffstat (limited to '')
9 files changed, 32 insertions, 15 deletions
diff --git a/app/build.gradle b/app/build.gradle index 26b73a0a..946bd4f8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,6 +24,7 @@ repositories { } mavenCentral() google() + jcenter() } dependencies { @@ -54,4 +55,5 @@ dependencies { annotationProcessor "android.arch.lifecycle:compiler:$rootProject.archLifecycleVersion" implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.0' + implementation 'org.sufficientlysecure:html-textview:3.6' } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java index eef1a004..8af5a765 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentRecyclerViewAdapter.java @@ -14,6 +14,8 @@ import android.widget.Toast; import com.android.volley.RequestQueue; +import org.sufficientlysecure.htmltextview.HtmlTextView; + import java.util.ArrayList; class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { @@ -40,7 +42,7 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) { ((CommentViewHolder) holder).authorTextView.setText(mCommentData.get(position).getAuthor()); ((CommentViewHolder) holder).commentTimeTextView.setText(mCommentData.get(position).getCommentTime()); - ((CommentViewHolder) holder).commentTextView.setText(mCommentData.get(position).getCommentContent()); + ((CommentViewHolder) holder).commentHtmlTextView.setHtml(mCommentData.get(position).getCommentContent()); ((CommentViewHolder) holder).scoreTextView.setText(Integer.toString(mCommentData.get(position).getScore())); switch (mCommentData.get(position).getVoteType()) { @@ -180,7 +182,7 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH private class CommentViewHolder extends RecyclerView.ViewHolder { private TextView authorTextView; private TextView commentTimeTextView; - private TextView commentTextView; + private HtmlTextView commentHtmlTextView; private ImageView upvoteButton; private ImageView downvoteButton; private TextView scoreTextView; @@ -190,7 +192,7 @@ class CommentRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewH super(itemView); authorTextView = itemView.findViewById(R.id.author_text_view_item_post_comment); commentTimeTextView = itemView.findViewById(R.id.comment_time_text_view_item_post_comment); - commentTextView = itemView.findViewById(R.id.comment_text_view_item_post_comment); + commentHtmlTextView = itemView.findViewById(R.id.comment_html_text_view_item_post_comment); upvoteButton = itemView.findViewById(R.id.plus_button_item_post_comment); downvoteButton = itemView.findViewById(R.id.minus_button_item_post_comment); scoreTextView = itemView.findViewById(R.id.score_text_view_item_post_comment); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java index 81d2a77f..d798f8dc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java @@ -13,7 +13,7 @@ class JSONUtils { static final String TITLE_KEY = "title"; static final String NAME_KEY = "name"; static final String SUBREDDIT_NAME_PREFIX_KEY = "subreddit_name_prefixed"; - static final String SELF_TEXT_KEY = "selftext"; + static final String SELFTEXT_HTML_KEY = "selftext_html"; static final String AUTHOR_KEY = "author"; static final String DOMAIN_KEY = "domain"; static final String LINK_FLAIR_TEXT_KEY = "link_flair_text"; @@ -44,7 +44,7 @@ class JSONUtils { static final String REDDIT_VIDEO_PREVIEW_KEY = "reddit_video_preview"; static final String IS_REDDIT_MEDIA_DOMAIN = "is_reddit_media_domain"; static final String STICKIED_KEY = "stickied"; - static final String BODY_KEY = "body"; + static final String BODY_HTML_KEY = "body_html"; static final String COLLAPSED_KEY = "collapsed"; static final String IS_SUBMITTER_KEY = "is_submitter"; static final String REPLIES_KEY = "replies"; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java index 686a4874..4f3781b0 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java @@ -72,7 +72,7 @@ class ParseComment { String fullName = data.getString(JSONUtils.LINK_ID); String author = data.getString(JSONUtils.AUTHOR_KEY); boolean isSubmitter = data.getBoolean(JSONUtils.IS_SUBMITTER_KEY); - String commentContent = data.getString(JSONUtils.BODY_KEY); + String commentContent = data.getString(JSONUtils.BODY_HTML_KEY); String permalink = data.getString(JSONUtils.PERMALINK_KEY); int score = data.getInt(JSONUtils.SCORE_KEY); long submitTime = data.getLong(JSONUtils.CREATED_UTC_KEY) * 1000; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java index aed3a1fc..b2fbb420 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java @@ -130,7 +130,12 @@ class ParsePost { Log.i("text", Integer.toString(i)); int postType = PostData.TEXT_TYPE; PostData postData = new PostData(id, fullName, subredditName, formattedPostTime, title, permalink, score, postType, voteType, nsfw); - postData.setSelfText(data.getString(JSONUtils.SELF_TEXT_KEY).trim()); + if(data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) { + postData.setSelfText(""); + } else { + postData.setSelfText(data.getString(JSONUtils.SELFTEXT_HTML_KEY).trim()); + } + postData.setSelfText(data.getString(JSONUtils.SELFTEXT_HTML_KEY).trim()); bestPostData.add(postData); } else { //No preview link post diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java index 3c31be30..47fa851e 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java @@ -46,6 +46,12 @@ class ParseSubredditData { String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION).trim(); String bannerImageUrl = data.getString(JSONUtils.BANNER_IMG_KEY); String iconImageUrl = data.getString(JSONUtils.ICON_IMG_KEY); + if(iconImageUrl.equals("") || iconImageUrl.equals("null")) { + iconImageUrl = data.getString(JSONUtils.COMMUNITY_ICON_KEY); + if(iconImageUrl.equals("null")) { + iconImageUrl = ""; + } + } int nSubscribers = data.getInt(JSONUtils.SUBSCRIBERS_KEY); int nCurrentOnlineSubscribers = data.getInt(JSONUtils.ACTIVE_USER_COUNT); subredditData = new SubredditData(id, subredditFullName, iconImageUrl, bannerImageUrl, description, nSubscribers); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java index e5a66601..51912948 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java @@ -32,6 +32,8 @@ import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; +import org.sufficientlysecure.htmltextview.HtmlTextView; + import java.util.ArrayList; import de.hdodenhof.circleimageview.CircleImageView; @@ -77,7 +79,7 @@ public class ViewPostDetailActivity extends AppCompatActivity { CircleImageView subredditIconCircleImageView = findViewById(R.id.subreddit_icon_circle_image_view_view_post_detail); TextView postTimeTextView = findViewById(R.id.post_time_text_view_view_post_detail); TextView subredditTextView = findViewById(R.id.subreddit_text_view_view_post_detail); - TextView contentTextView = findViewById(R.id.content_text_view_view_post_detail); + HtmlTextView contentTextView = findViewById(R.id.content_html_text_view_view_post_detail); TextView typeTextView = findViewById(R.id.type_text_view_view_post_detail); TextView nsfwTextView = findViewById(R.id.nsfw_text_view_view_post_detail); RelativeLayout relativeLayout = findViewById(R.id.image_view_wrapper_view_post_detail); @@ -294,7 +296,7 @@ public class ViewPostDetailActivity extends AppCompatActivity { typeTextView.setText("TEXT"); if(!mPostData.getSelfText().equals("")) { contentTextView.setVisibility(View.VISIBLE); - contentTextView.setText(mPostData.getSelfText()); + contentTextView.setHtml(mPostData.getSelfText()); } } queryComment(); diff --git a/app/src/main/res/layout/activity_view_post_detail.xml b/app/src/main/res/layout/activity_view_post_detail.xml index e696acf3..d3b0b3ce 100644 --- a/app/src/main/res/layout/activity_view_post_detail.xml +++ b/app/src/main/res/layout/activity_view_post_detail.xml @@ -74,8 +74,8 @@ android:textColor="#000000" android:textSize="18sp" /> - <TextView - android:id="@+id/content_text_view_view_post_detail" + <org.sufficientlysecure.htmltextview.HtmlTextView + android:id="@+id/content_html_text_view_view_post_detail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" @@ -84,7 +84,7 @@ android:layout_marginRight="16dp" android:layout_marginStart="16dp" android:layout_marginTop="16dp" - android:textSize="16sp" + android:textAppearance="@android:style/TextAppearance.Small" android:visibility="gone" /> <RelativeLayout diff --git a/app/src/main/res/layout/item_post_comment.xml b/app/src/main/res/layout/item_post_comment.xml index 25f0ef81..c1421084 100644 --- a/app/src/main/res/layout/item_post_comment.xml +++ b/app/src/main/res/layout/item_post_comment.xml @@ -32,8 +32,8 @@ </LinearLayout> - <TextView - android:id="@+id/comment_text_view_item_post_comment" + <org.sufficientlysecure.htmltextview.HtmlTextView + android:id="@+id/comment_html_text_view_item_post_comment" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="6dp" @@ -41,7 +41,7 @@ android:layout_marginStart="32dp" android:layout_marginRight="32dp" android:layout_marginEnd="32dp" - android:textColor="#000000"/> + android:textAppearance="@android:style/TextAppearance.Small"/> <RelativeLayout android:id="@+id/relative_layout_item_post_comment" |