Commit be1e1159 authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Merge pull request #227 from wncc/generify-fragments

Generify RecyclerViewFragment
parents fad9b717 d8f175b1
package app.insti;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
......@@ -19,24 +22,27 @@ import app.insti.fragment.EventFragment;
import app.insti.fragment.UserFragment;
public final class Utils {
public static UpdatableList<Event> eventCache = new UpdatableList<>();
private static String sessionId;
private static RetrofitInterface retrofitInterface;
public static UpdatableList<Event> eventCache = new UpdatableList<>();
public static final void loadImageWithPlaceholder(final ImageView imageView, final String url) {
Picasso.get()
.load(resizeImageUrl(url))
.into(imageView, new Callback() {
@Override
public void onSuccess() {
Picasso.get()
.load(url)
.placeholder(imageView.getDrawable())
.into(imageView);
}
@Override
public void onError(Exception ex) {}
});
.load(resizeImageUrl(url))
.into(imageView, new Callback() {
@Override
public void onSuccess() {
Picasso.get()
.load(url)
.placeholder(imageView.getDrawable())
.into(imageView);
}
@Override
public void onError(Exception ex) {
// Do nothing
}
});
}
public static final String resizeImageUrl(String url) {
......@@ -44,11 +50,15 @@ public final class Utils {
}
public static final String resizeImageUrl(String url, Integer dim) {
if (url == null) { return url; }
if (url == null) {
return url;
}
return url.replace("api.insti.app/static/", "img.insti.app/static/" + dim.toString() + "/");
}
/** Update the open fragment */
/**
* Update the open fragment
*/
public static final void updateFragment(Fragment fragment, FragmentActivity fragmentActivity) {
FragmentTransaction ft = fragmentActivity.getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left, R.anim.slide_in_right, R.anim.slide_out_right);
......@@ -97,4 +107,11 @@ public final class Utils {
public static void setRetrofitInterface(RetrofitInterface retrofitInterface) {
Utils.retrofitInterface = retrofitInterface;
}
public static void openWebURL(Context context, String URL) {
if (URL != null && !URL.isEmpty()) {
Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
context.startActivity(browse);
}
}
}
package app.insti.api.model;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
import app.insti.interfaces.Browsable;
import app.insti.interfaces.Clickable;
public class NewsArticle implements Browsable {
import static app.insti.Utils.openWebURL;
public class NewsArticle implements Clickable {
@NonNull()
@SerializedName("id")
private String articleID;
......@@ -84,4 +88,14 @@ public class NewsArticle implements Browsable {
public void setBody(Body body) {
this.body = body;
}
@Override
public View.OnClickListener getOnClickListener(final Context context) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
openWebURL(context, link);
}
};
}
}
package app.insti.api.model;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
import app.insti.interfaces.Browsable;
import app.insti.interfaces.Clickable;
public class PlacementBlogPost implements Browsable {
import static app.insti.Utils.openWebURL;
public class PlacementBlogPost implements Clickable {
@NonNull()
@SerializedName("id")
private String postID;
......@@ -72,4 +76,14 @@ public class PlacementBlogPost implements Browsable {
public void setPublished(Timestamp published) {
this.published = published;
}
@Override
public View.OnClickListener getOnClickListener(final Context context) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
openWebURL(context, link);
}
};
}
}
package app.insti.api.model;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.View;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
import app.insti.interfaces.Browsable;
import app.insti.interfaces.Clickable;
public class TrainingBlogPost implements Browsable {
import static app.insti.Utils.openWebURL;
public class TrainingBlogPost implements Clickable {
@NonNull()
@SerializedName("id")
private String postID;
......@@ -72,4 +76,14 @@ public class TrainingBlogPost implements Browsable {
public void setPublished(Timestamp published) {
this.published = published;
}
@Override
public View.OnClickListener getOnClickListener(final Context context) {
return new View.OnClickListener() {
@Override
public void onClick(View v) {
openWebURL(context, link);
}
};
}
}
......@@ -22,7 +22,7 @@ import app.insti.R;
import app.insti.Utils;
import app.insti.activity.MainActivity;
import app.insti.api.RetrofitInterface;
import app.insti.interfaces.Browsable;
import app.insti.interfaces.Clickable;
import app.insti.interfaces.ItemClickListener;
import app.insti.interfaces.Readable;
import app.insti.interfaces.Writable;
......@@ -32,7 +32,7 @@ import retrofit2.Response;
import static android.view.View.GONE;
public abstract class RecyclerViewFragment<T extends Browsable, S extends RecyclerView.Adapter<RecyclerView.ViewHolder> & Readable<T> & Writable<T>> extends BaseFragment {
public abstract class RecyclerViewFragment<T extends Clickable, S extends RecyclerView.Adapter<RecyclerView.ViewHolder> & Readable<T> & Writable<T>> extends BaseFragment {
public static boolean showLoader = true;
protected RecyclerView recyclerView;
protected Class<T> postType;
......@@ -103,9 +103,7 @@ public abstract class RecyclerViewFragment<T extends Browsable, S extends Recycl
adapter = adapterType.getDeclaredConstructor(List.class, ItemClickListener.class).newInstance(result, new ItemClickListener() {
@Override
public void onItemClick(View v, int position) {
String link = result.get(position).getLink();
if (link != null && !link.isEmpty())
openWebURL(link);
result.get(position).getOnClickListener(getContext()).onClick(v);
}
});
initRecyclerView();
......@@ -167,11 +165,6 @@ public abstract class RecyclerViewFragment<T extends Browsable, S extends Recycl
return adapter.getPosts().size();
}
private void openWebURL(String URL) {
Intent browse = new Intent(Intent.ACTION_VIEW, Uri.parse(URL));
startActivity(browse);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search_view_menu, menu);
......
package app.insti.interfaces;
public interface Browsable {
String getLink();
}
package app.insti.interfaces;
import android.content.Context;
import android.view.View.OnClickListener;
public interface Clickable {
OnClickListener getOnClickListener(Context context);
}
File mode changed from 100755 to 100644
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment