Close the navigation drawer after clicking the item in it. Fix some logic related to post parsing.

This commit is contained in:
Alex Ning 2018-10-27 16:46:30 +08:00
parent 86ea4c8982
commit 66402e661b
7 changed files with 76 additions and 35 deletions

View File

@ -91,7 +91,7 @@ public class MainActivity extends AppCompatActivity {
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
final DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
@ -142,8 +142,15 @@ public class MainActivity extends AppCompatActivity {
glide.load(mBannerImageUrl).into(mBannerImageView);
}
final SubscribedSubredditRecyclerViewAdapter subredditadapter = new SubscribedSubredditRecyclerViewAdapter(this);
final SubscribedSubredditRecyclerViewAdapter subredditadapter = new SubscribedSubredditRecyclerViewAdapter(this,
new SubscribedSubredditRecyclerViewAdapter.OnItemClickListener() {
@Override
public void onClick() {
drawer.closeDrawers();
}
});
subscribedSubredditRecyclerView.setAdapter(subredditadapter);
mSubscribedSubredditViewModel = ViewModelProviders.of(this).get(SubscribedSubredditViewModel.class);
mSubscribedSubredditViewModel.getAllSubscribedSubreddits().observe(this, new Observer<List<SubscribedSubredditData>>() {
@Override
@ -158,7 +165,13 @@ public class MainActivity extends AppCompatActivity {
}
});
final SubscribedUserRecyclerViewAdapter userAdapter = new SubscribedUserRecyclerViewAdapter(this);
final SubscribedUserRecyclerViewAdapter userAdapter = new SubscribedUserRecyclerViewAdapter(this,
new SubscribedUserRecyclerViewAdapter.OnItemClickListener() {
@Override
public void onClick() {
drawer.closeDrawers();
}
});
subscribedUserRecyclerView.setAdapter(userAdapter);
mSubscribedUserViewModel = ViewModelProviders.of(this).get(SubscribedUserViewModel.class);
mSubscribedUserViewModel.getAllSubscribedUsers().observe(this, new Observer<List<SubscribedUserData>>() {

View File

@ -199,6 +199,19 @@ class ParsePost {
int postType = PostData.IMAGE_TYPE;
bestPostData.add(new PostData(id, fullName, subredditNamePrefixed, formattedPostTime,
title, url, url, permalink, score, postType, voteType, gilded, nsfw, stickied, isCrosspost));
} else {
if (url.contains(permalink)) {
//Text post but with a preview
Log.i("text with image", Integer.toString(i));
int postType = PostData.TEXT_TYPE;
PostData textWithImagePostData = new PostData(id, fullName, subredditNamePrefixed, formattedPostTime,
title, permalink, score, postType, voteType, gilded, nsfw, stickied, isCrosspost);
if(data.isNull(JSONUtils.SELFTEXT_HTML_KEY)) {
textWithImagePostData.setSelfText("");
} else {
textWithImagePostData.setSelfText(data.getString(JSONUtils.SELFTEXT_HTML_KEY).trim());
}
bestPostData.add(textWithImagePostData);
} else {
//Link post
Log.i("link", Integer.toString(i));
@ -213,6 +226,7 @@ class ParsePost {
bestPostData.add(linkPostData);
}
}
}
} else {
if (url.endsWith("jpg") || url.endsWith("png")) {
//Image post

View File

@ -36,7 +36,6 @@ class PostData implements Parcelable {
private boolean isCrosspost;
private boolean isDashVideo;
private boolean isDownloadableGifOrVideo;
private PostData crosspostParentPostData;
PostData(String id, String fullName, String subredditNamePrefixed, String postTime, String title,
String previewUrl, String permalink, int score, int postType, int voteType, int gilded,

View File

@ -69,8 +69,8 @@ class PostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
mPostData = postData;
mPaginationSynchronizer = paginationSynchronizer;
this.hasMultipleSubreddits = hasMultipleSubreddits;
glide = Glide.with(mContext);
subredditDao = SubredditRoomDatabase.getDatabase(mContext).subredditDao();
glide = Glide.with(mContext.getApplicationContext());
subredditDao = SubredditRoomDatabase.getDatabase(mContext.getApplicationContext()).subredditDao();
}
}
@ -308,8 +308,9 @@ class PostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
}
});
break;
default:
case PostData.TEXT_TYPE:
((DataViewHolder) holder).typeTextView.setText("TEXT");
break;
}
((DataViewHolder) holder).upvoteButton.setOnClickListener(new View.OnClickListener() {

View File

@ -20,10 +20,16 @@ class SubscribedSubredditRecyclerViewAdapter extends RecyclerView.Adapter<Recycl
private Context mContext;
private List<SubscribedSubredditData> mSubscribedSubredditData;
private RequestManager glide;
private OnItemClickListener mOnItemClickListener;
SubscribedSubredditRecyclerViewAdapter(Context context) {
mContext = context;
glide = Glide.with(context);
interface OnItemClickListener {
void onClick();
}
SubscribedSubredditRecyclerViewAdapter(Context context, OnItemClickListener onItemClickListener) {
mContext = context.getApplicationContext();
glide = Glide.with(context.getApplicationContext());
mOnItemClickListener = onItemClickListener;
}
@NonNull
@ -38,6 +44,7 @@ class SubscribedSubredditRecyclerViewAdapter extends RecyclerView.Adapter<Recycl
@Override
public void onClick(View view) {
if(viewHolder.getAdapterPosition() >= 0) {
mOnItemClickListener.onClick();
Intent intent = new Intent(mContext, ViewSubredditDetailActivity.class);
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, mSubscribedSubredditData.get(viewHolder.getAdapterPosition()).getName());
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_VALUE_KEY, mSubscribedSubredditData.get(viewHolder.getAdapterPosition()).getId());

View File

@ -16,13 +16,17 @@ import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
class SubscribedUserRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private List<SubscribedUserData> mSubscribedUserData;
private RequestManager glide;
private OnItemClickListener mOnItemClickListener;
SubscribedUserRecyclerViewAdapter(Context context) {
mContext = context;
glide = Glide.with(context);
interface OnItemClickListener {
void onClick();
}
SubscribedUserRecyclerViewAdapter(Context context, OnItemClickListener onItemClickListener) {
glide = Glide.with(context.getApplicationContext());
mOnItemClickListener = onItemClickListener;
}
@NonNull
@ -33,6 +37,14 @@ class SubscribedUserRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Need to be implemented
mOnItemClickListener.onClick();
}
});
if(!mSubscribedUserData.get(i).getIconUrl().equals("")) {
glide.load(mSubscribedUserData.get(i).getIconUrl()).into(((UserViewHolder) viewHolder).iconCircleImageView);
} else {

View File

@ -205,6 +205,12 @@ public class ViewPostDetailActivity extends AppCompatActivity {
if(mPostData.isNSFW()) {
mNSFWTextView.setVisibility(View.VISIBLE);
}
if(!mPostData.getSelfText().equals("")) {
mContentTextView.setVisibility(View.VISIBLE);
mContentTextView.setHtml(mPostData.getSelfText());
}
mScoreTextView.setText(Integer.toString(mPostData.getScore()));
mShareButton.setOnClickListener(new View.OnClickListener() {
@ -235,10 +241,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
break;
case PostData.LINK_TYPE:
mTypeTextView.setText("LINK");
if(mPostData.getSelfText() != null && !mPostData.getSelfText().equals("")) {
mContentTextView.setVisibility(View.VISIBLE);
mContentTextView.setHtml(mPostData.getSelfText());
}
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
@ -296,10 +298,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
break;
case PostData.NO_PREVIEW_LINK_TYPE:
mTypeTextView.setText("LINK");
if(!mPostData.getSelfText().equals("")) {
mContentTextView.setVisibility(View.VISIBLE);
mContentTextView.setHtml(mPostData.getSelfText());
}
mNoPreviewLinkImageView.setVisibility(View.VISIBLE);
mNoPreviewLinkImageView.setOnClickListener(new View.OnClickListener() {
@Override
@ -315,10 +313,7 @@ public class ViewPostDetailActivity extends AppCompatActivity {
break;
case PostData.TEXT_TYPE:
mTypeTextView.setText("TEXT");
if(!mPostData.getSelfText().equals("")) {
mContentTextView.setVisibility(View.VISIBLE);
mContentTextView.setHtml(mPostData.getSelfText());
}
break;
}
queryComment();