mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-25 10:28:22 +01:00
Add a RecyclerView for subscribed subreddits in navigation drawer, rewrite some code and minor bugs fixed
This commit is contained in:
parent
0e6d4ae525
commit
e3653eb503
6
.idea/assetWizardSettings.xml
generated
6
.idea/assetWizardSettings.xml
generated
@ -23,7 +23,7 @@
|
|||||||
<PersistentState>
|
<PersistentState>
|
||||||
<option name="values">
|
<option name="values">
|
||||||
<map>
|
<map>
|
||||||
<entry key="url" value="jar:file:/home/alex/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/file/ic_file_download_black_24dp.xml" />
|
<entry key="url" value="jar:file:/home/alex/Android%20Studio/plugins/android/lib/android.jar!/images/material_design_icons/action/ic_account_circle_black_24dp.xml" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
</PersistentState>
|
</PersistentState>
|
||||||
@ -33,8 +33,8 @@
|
|||||||
</option>
|
</option>
|
||||||
<option name="values">
|
<option name="values">
|
||||||
<map>
|
<map>
|
||||||
<entry key="color" value="ffffff" />
|
<entry key="color" value="9e9e9e" />
|
||||||
<entry key="outputName" value="ic_file_download_white_24dp" />
|
<entry key="outputName" value="ic_account_circle_grey_24dp" />
|
||||||
<entry key="sourceFile" value="$USER_HOME$" />
|
<entry key="sourceFile" value="$USER_HOME$" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@ -25,7 +25,7 @@
|
|||||||
</value>
|
</value>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -50,6 +50,7 @@ class AcquireAccessToken {
|
|||||||
editor.putString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, newAccessToken);
|
editor.putString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, newAccessToken);
|
||||||
editor.apply();
|
editor.apply();
|
||||||
|
|
||||||
|
Log.i("access token", newAccessToken);
|
||||||
mAcquireAccessTokenListener.onAcquireAccessTokenSuccess();
|
mAcquireAccessTokenListener.onAcquireAccessTokenSuccess();
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -5,6 +5,7 @@ import android.app.Fragment;
|
|||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.design.widget.CoordinatorLayout;
|
import android.support.design.widget.CoordinatorLayout;
|
||||||
@ -169,7 +170,11 @@ public class BestPostFragment extends Fragment {
|
|||||||
|
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
mProgressBar.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
StringRequest bestPostRequest = new StringRequest(Request.Method.GET, RedditUtils.OAUTH_API_BASE_URI + RedditUtils.BEST_POST_SUFFIX, new Response.Listener<String>() {
|
Uri uri = Uri.parse(RedditUtils.OAUTH_API_BASE_URI + RedditUtils.BEST_POST_SUFFIX)
|
||||||
|
.buildUpon().appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
StringRequest bestPostRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
if(getActivity() != null) {
|
if(getActivity() != null) {
|
||||||
@ -196,7 +201,7 @@ public class BestPostFragment extends Fragment {
|
|||||||
Log.i("Best post fetch error", "Error parsing data");
|
Log.i("Best post fetch error", "Error parsing data");
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}).parseBestPost(response, null);
|
}).parseBestPost(response, new ArrayList<BestPostData>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, new Response.ErrorListener() {
|
}, new Response.ErrorListener() {
|
||||||
|
@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
import android.support.v7.widget.LinearLayoutManager;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -92,7 +93,11 @@ class BestPostPaginationScrollListener extends RecyclerView.OnScrollListener {
|
|||||||
loadSuccess = false;
|
loadSuccess = false;
|
||||||
mPaginationSynchronizer.setLoading(true);
|
mPaginationSynchronizer.setLoading(true);
|
||||||
|
|
||||||
StringRequest bestPostRequest = new StringRequest(Request.Method.GET, RedditUtils.OAUTH_API_BASE_URI + RedditUtils.BEST_POST_SUFFIX + "&" + RedditUtils.AFTER_KEY + "=" + mLastItem, new Response.Listener<String>() {
|
Uri uri = Uri.parse(RedditUtils.OAUTH_API_BASE_URI + RedditUtils.BEST_POST_SUFFIX)
|
||||||
|
.buildUpon().appendQueryParameter(RedditUtils.AFTER_KEY, mLastItem)
|
||||||
|
.appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE).build();
|
||||||
|
|
||||||
|
StringRequest bestPostRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
|
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
@ -1,5 +1,97 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
class FetchSubscribedSubreddits {
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.volley.AuthFailureError;
|
||||||
|
import com.android.volley.Request;
|
||||||
|
import com.android.volley.RequestQueue;
|
||||||
|
import com.android.volley.Response;
|
||||||
|
import com.android.volley.VolleyError;
|
||||||
|
import com.android.volley.toolbox.StringRequest;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
class FetchSubscribedSubreddits {
|
||||||
|
interface FetchSubscribedSubredditsListener {
|
||||||
|
void onFetchSubscribedSubredditsSuccess(ArrayList<SubredditData> subredditData);
|
||||||
|
void onFetchSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
private RequestQueue requestQueue;
|
||||||
|
private FetchSubscribedSubredditsListener mFetchSubscribedSubredditsListener;
|
||||||
|
private ArrayList<SubredditData> mSubredditData;
|
||||||
|
|
||||||
|
private String mLastItem;
|
||||||
|
|
||||||
|
FetchSubscribedSubreddits(Context context, RequestQueue requestQueue, ArrayList<SubredditData> subredditData) {
|
||||||
|
this.context = context;
|
||||||
|
this.requestQueue = requestQueue;
|
||||||
|
mSubredditData = subredditData;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fetchSubscribedSubreddits(FetchSubscribedSubredditsListener fetchUserInfoListener, final int refreshTime) {
|
||||||
|
if(refreshTime < 0) {
|
||||||
|
mFetchSubscribedSubredditsListener.onFetchSubscribedSubredditsFail();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri uri = Uri.parse(RedditUtils.OAUTH_API_BASE_URI + RedditUtils.SUBSCRIBED_SUBREDDITS)
|
||||||
|
.buildUpon().appendQueryParameter(RedditUtils.AFTER_KEY, mLastItem)
|
||||||
|
.appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE).build();
|
||||||
|
|
||||||
|
mFetchSubscribedSubredditsListener = fetchUserInfoListener;
|
||||||
|
StringRequest commentRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(String response) {
|
||||||
|
new ParseSubscribedSubreddits().parseSubscribedSubreddits(response, mSubredditData,
|
||||||
|
new ParseSubscribedSubreddits.ParseSubscribedSubredditsListener() {
|
||||||
|
@Override
|
||||||
|
public void onParseSubscribedSubredditsSuccess(ArrayList<SubredditData> subredditData, String lastItem) {
|
||||||
|
mSubredditData = subredditData;
|
||||||
|
mLastItem = lastItem;
|
||||||
|
Log.i("last item", lastItem);
|
||||||
|
if(mLastItem.equals("null")) {
|
||||||
|
mFetchSubscribedSubredditsListener.onFetchSubscribedSubredditsSuccess(mSubredditData);
|
||||||
|
} else {
|
||||||
|
fetchSubscribedSubreddits(mFetchSubscribedSubredditsListener, refreshTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onParseSubscribedSubredditsFail() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, new Response.ErrorListener() {
|
||||||
|
@Override
|
||||||
|
public void onErrorResponse(VolleyError error) {
|
||||||
|
if(error instanceof AuthFailureError) {
|
||||||
|
new AcquireAccessToken(context).refreshAccessToken(requestQueue, new AcquireAccessToken.AcquireAccessTokenListener() {
|
||||||
|
@Override
|
||||||
|
public void onAcquireAccessTokenSuccess() {
|
||||||
|
fetchSubscribedSubreddits(mFetchSubscribedSubredditsListener, refreshTime - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAcquireAccessTokenFail() {}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
mFetchSubscribedSubredditsListener.onFetchSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
@Override
|
||||||
|
public Map<String, String> getHeaders() {
|
||||||
|
String accessToken = context.getSharedPreferences(SharedPreferencesUtils.AUTH_CODE_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, "");
|
||||||
|
return RedditUtils.getOAuthHeader(accessToken);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
commentRequest.setTag(FetchComment.class);
|
||||||
|
requestQueue.add(commentRequest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
import com.android.volley.AuthFailureError;
|
import com.android.volley.AuthFailureError;
|
||||||
import com.android.volley.Request;
|
import com.android.volley.Request;
|
||||||
@ -33,11 +34,15 @@ class FetchUserInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mFetchUserInfoListener = fetchUserInfoListener;
|
mFetchUserInfoListener = fetchUserInfoListener;
|
||||||
StringRequest commentRequest = new StringRequest(Request.Method.GET, RedditUtils.OAUTH_API_BASE_URI + RedditUtils.USER_INFO_SUFFIX, new Response.Listener<String>() {
|
|
||||||
|
Uri uri = Uri.parse(RedditUtils.OAUTH_API_BASE_URI + RedditUtils.USER_INFO_SUFFIX)
|
||||||
|
.buildUpon().appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
StringRequest commentRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
mFetchUserInfoListener.onFetchUserInfoSuccess(response);
|
mFetchUserInfoListener.onFetchUserInfoSuccess(response);
|
||||||
|
|
||||||
}
|
}
|
||||||
}, new Response.ErrorListener() {
|
}, new Response.ErrorListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -56,4 +56,5 @@ class JSONUtils {
|
|||||||
static final String ICON_IMG_KEY = "icon_img";
|
static final String ICON_IMG_KEY = "icon_img";
|
||||||
static final String LINK_KARMA_KEY = "link_karma";
|
static final String LINK_KARMA_KEY = "link_karma";
|
||||||
static final String COMMENT_KARMA_KEY = "comment_karma";
|
static final String COMMENT_KARMA_KEY = "comment_karma";
|
||||||
|
static final String DISPLAY_NAME = "display_name";
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,13 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.design.widget.NavigationView;
|
|
||||||
import android.support.v4.view.GravityCompat;
|
import android.support.v4.view.GravityCompat;
|
||||||
import android.support.v4.widget.DrawerLayout;
|
import android.support.v4.widget.DrawerLayout;
|
||||||
import android.support.v7.app.ActionBarDrawerToggle;
|
import android.support.v7.app.ActionBarDrawerToggle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@ -22,10 +21,13 @@ import com.android.volley.toolbox.Volley;
|
|||||||
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.Glide;
|
||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
import de.hdodenhof.circleimageview.CircleImageView;
|
import de.hdodenhof.circleimageview.CircleImageView;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity
|
public class MainActivity extends AppCompatActivity {
|
||||||
implements NavigationView.OnNavigationItemSelectedListener {
|
|
||||||
|
|
||||||
private String nameState = "NS";
|
private String nameState = "NS";
|
||||||
private String profileImageUrlState = "PIUS";
|
private String profileImageUrlState = "PIUS";
|
||||||
@ -36,6 +38,7 @@ public class MainActivity extends AppCompatActivity
|
|||||||
private TextView mKarmaTextView;
|
private TextView mKarmaTextView;
|
||||||
private CircleImageView mProfileImageView;
|
private CircleImageView mProfileImageView;
|
||||||
private ImageView mBannerImageView;
|
private ImageView mBannerImageView;
|
||||||
|
private RecyclerView mSubscribedSubredditRecyclerView;
|
||||||
|
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private RequestManager glide;
|
private RequestManager glide;
|
||||||
@ -46,6 +49,8 @@ public class MainActivity extends AppCompatActivity
|
|||||||
private String mKarma;
|
private String mKarma;
|
||||||
private boolean mFetchUserInfoSuccess;
|
private boolean mFetchUserInfoSuccess;
|
||||||
|
|
||||||
|
private ArrayList<SubredditData> mSubredditData;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -59,15 +64,15 @@ public class MainActivity extends AppCompatActivity
|
|||||||
drawer.addDrawerListener(toggle);
|
drawer.addDrawerListener(toggle);
|
||||||
toggle.syncState();
|
toggle.syncState();
|
||||||
|
|
||||||
NavigationView navigationView = findViewById(R.id.nav_view);
|
View header = findViewById(R.id.nav_header_main_activity);
|
||||||
navigationView.setNavigationItemSelectedListener(this);
|
|
||||||
|
|
||||||
View header = navigationView.getHeaderView(0);
|
|
||||||
mNameTextView = header.findViewById(R.id.name_text_view_nav_header_main);
|
mNameTextView = header.findViewById(R.id.name_text_view_nav_header_main);
|
||||||
mKarmaTextView = header.findViewById(R.id.karma_text_view_nav_header_main);
|
mKarmaTextView = header.findViewById(R.id.karma_text_view_nav_header_main);
|
||||||
mProfileImageView = header.findViewById(R.id.profile_image_view_nav_header_main);
|
mProfileImageView = header.findViewById(R.id.profile_image_view_nav_header_main);
|
||||||
mBannerImageView = header.findViewById(R.id.banner_image_view_nav_header_main);
|
mBannerImageView = header.findViewById(R.id.banner_image_view_nav_header_main);
|
||||||
|
|
||||||
|
mSubscribedSubredditRecyclerView = findViewById(R.id.subscribed_subreddit_recycler_view_main_activity);
|
||||||
|
mSubscribedSubredditRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
|
|
||||||
mName = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.USER_KEY, "");
|
mName = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.USER_KEY, "");
|
||||||
mProfileImageUrl = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.PROFILE_IMAGE_URL_KEY, "");
|
mProfileImageUrl = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.PROFILE_IMAGE_URL_KEY, "");
|
||||||
mBannerImageUrl = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.BANNER_IMAGE_URL_KEY, "");
|
mBannerImageUrl = getSharedPreferences(SharedPreferencesUtils.USER_INFO_FILE_KEY, Context.MODE_PRIVATE).getString(SharedPreferencesUtils.BANNER_IMAGE_URL_KEY, "");
|
||||||
@ -102,7 +107,7 @@ public class MainActivity extends AppCompatActivity
|
|||||||
new FetchUserInfo(this, Volley.newRequestQueue(this)).queryUserInfo(new FetchUserInfo.FetchUserInfoListener() {
|
new FetchUserInfo(this, Volley.newRequestQueue(this)).queryUserInfo(new FetchUserInfo.FetchUserInfoListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchUserInfoSuccess(String response) {
|
public void onFetchUserInfoSuccess(String response) {
|
||||||
new ParseUserInfo().parseUserInfo(MainActivity.this, response, new ParseUserInfo.ParseUserInfoListener() {
|
new ParseUserInfo().parseUserInfo(response, new ParseUserInfo.ParseUserInfoListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseUserInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) {
|
public void onParseUserInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) {
|
||||||
mNameTextView.setText(name);
|
mNameTextView.setText(name);
|
||||||
@ -142,6 +147,26 @@ public class MainActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
}, 1);
|
}, 1);
|
||||||
}
|
}
|
||||||
|
new FetchSubscribedSubreddits(this, Volley.newRequestQueue(this), new ArrayList<SubredditData>())
|
||||||
|
.fetchSubscribedSubreddits(new FetchSubscribedSubreddits.FetchSubscribedSubredditsListener() {
|
||||||
|
@Override
|
||||||
|
public void onFetchSubscribedSubredditsSuccess(ArrayList<SubredditData> subredditData) {
|
||||||
|
Collections.sort(subredditData, new Comparator<SubredditData>() {
|
||||||
|
@Override
|
||||||
|
public int compare(SubredditData subredditData, SubredditData t1) {
|
||||||
|
return subredditData.getName().toLowerCase().compareTo(t1.getName().toLowerCase());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
mSubredditData = subredditData;
|
||||||
|
mSubscribedSubredditRecyclerView.setAdapter(new SubscribedSubredditRecyclerViewAdapter(
|
||||||
|
MainActivity.this, mSubredditData));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFetchSubscribedSubredditsFail() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -154,53 +179,6 @@ public class MainActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
// Inflate the menu; this adds items to the action bar if it is present.
|
|
||||||
getMenuInflater().inflate(R.menu.main, menu);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
|
||||||
// Handle action bar item clicks here. The action bar will
|
|
||||||
// automatically handle clicks on the Home/Up button, so long
|
|
||||||
// as you specify a parent activity in AndroidManifest.xml.
|
|
||||||
int id = item.getItemId();
|
|
||||||
|
|
||||||
//noinspection SimplifiableIfStatement
|
|
||||||
if (id == R.id.action_settings) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("StatementWithEmptyBody")
|
|
||||||
@Override
|
|
||||||
public boolean onNavigationItemSelected(MenuItem item) {
|
|
||||||
// Handle navigation view item clicks here.
|
|
||||||
int id = item.getItemId();
|
|
||||||
|
|
||||||
if (id == R.id.nav_camera) {
|
|
||||||
// Handle the camera action
|
|
||||||
} else if (id == R.id.nav_gallery) {
|
|
||||||
|
|
||||||
} else if (id == R.id.nav_slideshow) {
|
|
||||||
|
|
||||||
} else if (id == R.id.nav_manage) {
|
|
||||||
|
|
||||||
} else if (id == R.id.nav_share) {
|
|
||||||
|
|
||||||
} else if (id == R.id.nav_send) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
DrawerLayout drawer = findViewById(R.id.drawer_layout);
|
|
||||||
drawer.closeDrawer(GravityCompat.START);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(Bundle outState) {
|
protected void onSaveInstanceState(Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
|
@ -59,9 +59,6 @@ class ParseBestPost {
|
|||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
try {
|
try {
|
||||||
JSONArray allData = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
JSONArray allData = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
if(bestPostData == null) {
|
|
||||||
bestPostData = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
lastItem = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
lastItem = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
||||||
for(int i = 0; i < allData.length(); i++) {
|
for(int i = 0; i < allData.length(); i++) {
|
||||||
@ -199,106 +196,4 @@ class ParseBestPost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private void parseData(JSONObject data, String permalink, ArrayList<BestPostData> bestPostData,
|
|
||||||
String id, String fullName, String subredditName, String formattedPostTime, String title,
|
|
||||||
int score, int voteType, boolean nsfw, int i) throws JSONException {
|
|
||||||
boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY);
|
|
||||||
if(!data.has(JSONUtils.PREVIEW_KEY)) {
|
|
||||||
String url = data.getString(JSONUtils.URL_KEY);
|
|
||||||
if(url.contains(permalink)) {
|
|
||||||
//Text post
|
|
||||||
Log.i("text", Integer.toString(i));
|
|
||||||
int postType = BestPostData.TEXT_TYPE;
|
|
||||||
BestPostData postData = new BestPostData(id, fullName, subredditName, formattedPostTime, title, permalink, score, postType, voteType, nsfw);
|
|
||||||
postData.setSelfText(data.getString(JSONUtils.SELF_TEXT_KEY).trim());
|
|
||||||
bestPostData.add(postData);
|
|
||||||
} else {
|
|
||||||
//No preview link post
|
|
||||||
Log.i("no preview link", Integer.toString(i));
|
|
||||||
int postType = BestPostData.NO_PREVIEW_LINK_TYPE;
|
|
||||||
BestPostData post = new BestPostData(id, fullName, subredditName, formattedPostTime, title, permalink, score, postType, voteType, nsfw);
|
|
||||||
post.setLinkUrl(url);
|
|
||||||
bestPostData.add(post);
|
|
||||||
}
|
|
||||||
} else if (!isVideo) {
|
|
||||||
JSONObject variations = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0);
|
|
||||||
String previewUrl = variations.getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
|
||||||
if (variations.has(JSONUtils.VARIANTS_KEY)) {
|
|
||||||
if (variations.getJSONObject(JSONUtils.VARIANTS_KEY).has(JSONUtils.MP4_KEY)) {
|
|
||||||
//Gif video
|
|
||||||
Log.i("gif video", Integer.toString(i));
|
|
||||||
int postType = BestPostData.GIF_VIDEO_TYPE;
|
|
||||||
String videoUrl = variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.MP4_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
|
||||||
|
|
||||||
BestPostData post = new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
post.setVideoUrl(videoUrl);
|
|
||||||
bestPostData.add(post);
|
|
||||||
} else if (variations.getJSONObject(JSONUtils.VARIANTS_KEY).has(JSONUtils.GIF_KEY)) {
|
|
||||||
//Gif post
|
|
||||||
Log.i("gif", Integer.toString(i));
|
|
||||||
int postType = BestPostData.GIF_TYPE;
|
|
||||||
String gifUrl = variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.GIF_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
|
||||||
|
|
||||||
BestPostData post = new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
post.setGifUrl(gifUrl);
|
|
||||||
bestPostData.add(post);
|
|
||||||
} else {
|
|
||||||
if(data.getJSONObject(JSONUtils.PREVIEW_KEY).has(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY)) {
|
|
||||||
//Gif link post
|
|
||||||
Log.i("gif link", Integer.toString(i));
|
|
||||||
int postType = BestPostData.LINK_TYPE;
|
|
||||||
String gifUrl = data.getString(JSONUtils.URL_KEY);
|
|
||||||
BestPostData gifLinkPostData = new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
gifLinkPostData.setLinkUrl(gifUrl);
|
|
||||||
bestPostData.add(gifLinkPostData);
|
|
||||||
} else {
|
|
||||||
if(!data.isNull(JSONUtils.MEDIA_KEY)) {
|
|
||||||
//Video link post
|
|
||||||
Log.i("video link", Integer.toString(i));
|
|
||||||
int postType = BestPostData.LINK_TYPE;
|
|
||||||
String videoUrl = data.getString(JSONUtils.URL_KEY);
|
|
||||||
BestPostData videoLinkPostData = new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
videoLinkPostData.setLinkUrl(videoUrl);
|
|
||||||
bestPostData.add(videoLinkPostData);
|
|
||||||
} else {
|
|
||||||
if(data.getBoolean(JSONUtils.IS_REDDIT_MEDIA_DOMAIN)) {
|
|
||||||
//Image post
|
|
||||||
Log.i("image", Integer.toString(i));
|
|
||||||
int postType = BestPostData.IMAGE_TYPE;
|
|
||||||
bestPostData.add(new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw));
|
|
||||||
} else {
|
|
||||||
//Link post
|
|
||||||
Log.i("link", Integer.toString(i));
|
|
||||||
int postType = BestPostData.LINK_TYPE;
|
|
||||||
String linkUrl = data.getString(JSONUtils.URL_KEY);
|
|
||||||
BestPostData linkPostData = new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
linkPostData.setLinkUrl(linkUrl);
|
|
||||||
bestPostData.add(linkPostData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Image post
|
|
||||||
Toast.makeText(mContext, "Fixed post" + Integer.toString(i), Toast.LENGTH_SHORT).show();
|
|
||||||
Log.i("fixed image", Integer.toString(i));
|
|
||||||
int postType = BestPostData.IMAGE_TYPE;
|
|
||||||
bestPostData.add(new BestPostData(id, fullName, subredditName, formattedPostTime, title, previewUrl, permalink, score, postType, voteType, nsfw));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Video post
|
|
||||||
Log.i("video", Integer.toString(i));
|
|
||||||
JSONObject redditVideoObject = data.getJSONObject(JSONUtils.MEDIA_KEY).getJSONObject(JSONUtils.REDDIT_VIDEO_KEY);
|
|
||||||
int postType = BestPostData.VIDEO_TYPE;
|
|
||||||
String videoUrl = redditVideoObject.getString(JSONUtils.DASH_URL_KEY);
|
|
||||||
|
|
||||||
String videoPreviewUrl = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
|
||||||
|
|
||||||
BestPostData videoPostData = new BestPostData(id, fullName, subredditName, formattedPostTime, title, videoPreviewUrl, permalink, score, postType, voteType, nsfw);
|
|
||||||
videoPostData.setVideoUrl(videoUrl);
|
|
||||||
|
|
||||||
bestPostData.add(videoPostData);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,72 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
class ParseSubscribedSubreddits {
|
class ParseSubscribedSubreddits {
|
||||||
|
interface ParseSubscribedSubredditsListener {
|
||||||
|
void onParseSubscribedSubredditsSuccess(ArrayList<SubredditData> subredditData, String lastItem);
|
||||||
|
void onParseSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
private ParseSubscribedSubredditsListener mParseSubscribedSubredditsListener;
|
||||||
|
|
||||||
|
void parseSubscribedSubreddits(String response, ArrayList<SubredditData> subredditData,
|
||||||
|
ParseSubscribedSubredditsListener parseSubscribedSubredditsListener) {
|
||||||
|
mParseSubscribedSubredditsListener = parseSubscribedSubredditsListener;
|
||||||
|
new ParseSubscribedSubredditsAsyncTask(response, subredditData).execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ParseSubscribedSubredditsAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
private JSONObject jsonResponse;
|
||||||
|
private boolean parseFailed;
|
||||||
|
private String lastItem;
|
||||||
|
private ArrayList<SubredditData> subredditData;
|
||||||
|
private ArrayList<SubredditData> newSubredditData;
|
||||||
|
|
||||||
|
ParseSubscribedSubredditsAsyncTask(String response, ArrayList<SubredditData> subredditData){
|
||||||
|
try {
|
||||||
|
jsonResponse = new JSONObject(response);
|
||||||
|
parseFailed = false;
|
||||||
|
this.subredditData = subredditData;
|
||||||
|
newSubredditData = new ArrayList<>();
|
||||||
|
} catch (JSONException e) {
|
||||||
|
Log.i("user info json error", e.getMessage());
|
||||||
|
mParseSubscribedSubredditsListener.onParseSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... voids) {
|
||||||
|
try {
|
||||||
|
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
|
for(int i = 0; i < children.length(); i++) {
|
||||||
|
String name = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.DISPLAY_NAME);
|
||||||
|
String iconUrl = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.ICON_IMG_KEY);
|
||||||
|
newSubredditData.add(new SubredditData(name, iconUrl));
|
||||||
|
}
|
||||||
|
lastItem = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
parseFailed = true;
|
||||||
|
Log.i("parse comment error", e.getMessage());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void aVoid) {
|
||||||
|
if(!parseFailed) {
|
||||||
|
subredditData.addAll(newSubredditData);
|
||||||
|
mParseSubscribedSubredditsListener.onParseSubscribedSubredditsSuccess(subredditData, lastItem);
|
||||||
|
} else {
|
||||||
|
mParseSubscribedSubredditsListener.onParseSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -14,13 +13,11 @@ class ParseUserInfo {
|
|||||||
void onParseUserInfoFail();
|
void onParseUserInfoFail();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Context mContext;
|
|
||||||
private ParseUserInfoListener mParseUserInfoListener;
|
private ParseUserInfoListener mParseUserInfoListener;
|
||||||
|
|
||||||
void parseUserInfo(Context context, String response, ParseUserInfoListener parseUserInfoListener) {
|
void parseUserInfo(String response, ParseUserInfoListener parseUserInfoListener) {
|
||||||
mParseUserInfoListener = parseUserInfoListener;
|
mParseUserInfoListener = parseUserInfoListener;
|
||||||
mContext = context;
|
new ParseUserInfoAsyncTask(response).execute();
|
||||||
new ParseUserInfo.ParseUserInfoAsyncTask(response).execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ParseUserInfoAsyncTask extends AsyncTask<Void, Void, Void> {
|
private class ParseUserInfoAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
@ -14,9 +14,12 @@ class RedditUtils {
|
|||||||
static final String ACQUIRE_ACCESS_TOKEN_URL = "https://www.reddit.com/api/v1/access_token";
|
static final String ACQUIRE_ACCESS_TOKEN_URL = "https://www.reddit.com/api/v1/access_token";
|
||||||
static final String OAUTH_API_BASE_URI = "https://oauth.reddit.com";
|
static final String OAUTH_API_BASE_URI = "https://oauth.reddit.com";
|
||||||
static final String API_BASE_URI = "https://www.reddit.com";
|
static final String API_BASE_URI = "https://www.reddit.com";
|
||||||
static final String BEST_POST_SUFFIX = "/best?raw_json=1";
|
static final String RAW_JSON_KEY ="raw_json";
|
||||||
|
static final String RAW_JSON_VALUE = "1";
|
||||||
|
static final String BEST_POST_SUFFIX = "/best";
|
||||||
static final String VOTE_SUFFIX = "/api/vote";
|
static final String VOTE_SUFFIX = "/api/vote";
|
||||||
static final String USER_INFO_SUFFIX = "/api/v1/me?raw_json=1";
|
static final String USER_INFO_SUFFIX = "/api/v1/me";
|
||||||
|
static final String SUBSCRIBED_SUBREDDITS = "/subreddits/mine/subscriber";
|
||||||
|
|
||||||
static final String CLIENT_ID_KEY = "client_id";
|
static final String CLIENT_ID_KEY = "client_id";
|
||||||
static final String CLIENT_ID = "";
|
static final String CLIENT_ID = "";
|
||||||
|
@ -1,4 +1,50 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
class SubredditData {
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
class SubredditData implements Parcelable {
|
||||||
|
private String name;
|
||||||
|
private String iconUrl;
|
||||||
|
|
||||||
|
SubredditData(String name, String iconUrl) {
|
||||||
|
this.name = name;
|
||||||
|
this.iconUrl = iconUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected SubredditData(Parcel in) {
|
||||||
|
name = in.readString();
|
||||||
|
iconUrl = in.readString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Creator<SubredditData> CREATOR = new Creator<SubredditData>() {
|
||||||
|
@Override
|
||||||
|
public SubredditData createFromParcel(Parcel in) {
|
||||||
|
return new SubredditData(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SubredditData[] newArray(int size) {
|
||||||
|
return new SubredditData[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIconUrl() {
|
||||||
|
return iconUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel parcel, int i) {
|
||||||
|
parcel.writeString(name);
|
||||||
|
parcel.writeString(iconUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,65 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
class SubscribedSubredditRecyclerViewAdapter {
|
import android.content.Context;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v7.widget.RecyclerView;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import com.bumptech.glide.Glide;
|
||||||
|
import com.bumptech.glide.RequestManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import de.hdodenhof.circleimageview.CircleImageView;
|
||||||
|
|
||||||
|
class SubscribedSubredditRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
Context mContext;
|
||||||
|
ArrayList<SubredditData> mSubredditData;
|
||||||
|
RequestManager glide;
|
||||||
|
|
||||||
|
SubscribedSubredditRecyclerViewAdapter(Context context, ArrayList<SubredditData> subredditData) {
|
||||||
|
mContext = context;
|
||||||
|
mSubredditData = subredditData;
|
||||||
|
glide = Glide.with(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
|
||||||
|
return new SubredditViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_subscribed_subreddit, viewGroup, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
|
||||||
|
if(!mSubredditData.get(i).getIconUrl().equals("")) {
|
||||||
|
glide.load(mSubredditData.get(i).getIconUrl()).into(((SubredditViewHolder) viewHolder).iconCircleImageView);
|
||||||
|
} else {
|
||||||
|
glide.load(R.drawable.subreddit_default_icon).into(((SubredditViewHolder) viewHolder).iconCircleImageView);
|
||||||
|
}
|
||||||
|
((SubredditViewHolder) viewHolder).subredditNameTextView.setText(mSubredditData.get(i).getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mSubredditData.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
|
glide.clear(((SubredditViewHolder) holder).iconCircleImageView);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SubredditViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
private CircleImageView iconCircleImageView;
|
||||||
|
private TextView subredditNameTextView;
|
||||||
|
|
||||||
|
public SubredditViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
iconCircleImageView = itemView.findViewById(R.id.subreddit_icon_circle_image_view_item_subscribed_subreddit);
|
||||||
|
subredditNameTextView = itemView.findViewById(R.id.subreddit_name_text_view_item_subscribed_subreddit);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,9 +18,59 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="start"
|
android:layout_gravity="start"
|
||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true">
|
||||||
app:headerLayout="@layout/nav_header_main"
|
|
||||||
app:menu="@menu/activity_main_drawer" />
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/nav_header_main_activity"
|
||||||
|
layout="@layout/nav_header_main" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="16dp"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:background="?attr/selectableItemBackground">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_marginEnd="32dp"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:src="@drawable/ic_account_circle_grey_24dp"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/profile"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:layout_gravity="center_vertical"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:background="#E0E0E0"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/subscriptions"
|
||||||
|
android:layout_margin="16dp"/>
|
||||||
|
|
||||||
|
<android.support.v7.widget.RecyclerView
|
||||||
|
android:id="@+id/subscribed_subreddit_recycler_view_main_activity"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</android.support.design.widget.NavigationView>
|
||||||
|
|
||||||
</android.support.v4.widget.DrawerLayout>
|
</android.support.v4.widget.DrawerLayout>
|
||||||
|
@ -1,6 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.constraint.ConstraintLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
|
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="16dp"
|
||||||
|
android:clickable="true"
|
||||||
|
android:focusable="true"
|
||||||
|
android:background="?attr/selectableItemBackground">
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
<de.hdodenhof.circleimageview.CircleImageView
|
||||||
|
android:id="@+id/subreddit_icon_circle_image_view_item_subscribed_subreddit"
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="center_vertical"
|
||||||
|
android:layout_marginEnd="32dp"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/subreddit_name_text_view_item_subscribed_subreddit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textColor="@android:color/black"
|
||||||
|
android:layout_gravity="center_vertical"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -15,4 +15,7 @@
|
|||||||
|
|
||||||
<string name="nsfw">NSFW</string>
|
<string name="nsfw">NSFW</string>
|
||||||
<string name="karma_info">Karma: %1$d</string>
|
<string name="karma_info">Karma: %1$d</string>
|
||||||
|
|
||||||
|
<string name="profile">Profile</string>
|
||||||
|
<string name="subscriptions">Subscriptions</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user