package com.kenny.openimgur.ui.adapters;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import com.kenny.openimgur.classes.OpengurApp;
import com.kenny.openimgur.util.ImageUtil;
import com.kenny.openimgur.util.LogUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
import butterknife.ButterKnife;
/**
* Created by kcampagna on 8/25/16.
*/
public abstract class BaseRecyclerAdapter<T> extends com.kennyc.adapters.BaseRecyclerAdapter<T, BaseRecyclerAdapter.BaseViewHolder> {
protected final String TAG = getClass().getSimpleName();
protected boolean isDarkTheme = false;
private ImageLoader imageLoader;
public BaseRecyclerAdapter(Context context, List<T> collection, boolean hasImageLoader) {
super(context, collection);
if (hasImageLoader) imageLoader = ImageUtil.getImageLoader(context);
isDarkTheme = OpengurApp.getInstance(context).getImgurTheme().isDarkTheme;
}
/**
* Simple constructor for creating a BaseRecyclerAdapter
*
* @param context The context the adapter is running in
* @param collection A list of items to populate the adapter with, can be null. If passing a null list,
* {@link #addItem(Object)} will throw an exception as the list type is undefined. The list
* needs to be created first with {@link #addItems(List)}
*/
public BaseRecyclerAdapter(Context context, List<T> collection) {
this(context, collection, false);
}
/**
* Displays the image
*
* @param imageView
* @param url
*/
protected void displayImage(ImageView imageView, String url) {
if (imageLoader == null) {
throw new IllegalStateException("Image Loader has not been created");
}
imageLoader.cancelDisplayTask(imageView);
imageLoader.displayImage(url, imageView, getDisplayOptions());
}
/**
* Returns the display options to be used for the image loader in the adapter
*
* @return
*/
protected DisplayImageOptions getDisplayOptions() {
return ImageUtil.getDefaultDisplayOptions().build();
}
/**
* Frees up any resources tied to the adapter. Should be called in an activities onDestroy lifecycle method if needed
*/
public void onDestroy() {
super.onDestroy();
LogUtil.v(TAG, "onDestroy");
}
public abstract static class BaseViewHolder extends RecyclerView.ViewHolder {
public BaseViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}