package org.witness.informacam.app.utils.adapters;
import java.util.List;
import org.witness.informacam.app.views.RoundedImageView;
import org.witness.informacam.models.media.IMedia;
import org.witness.informacam.models.media.IVideo;
import org.witness.informacam.app.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class HomePhotoAdapter extends PagerAdapter {
List<? super IMedia> media;
LayoutInflater li;
Activity a;
//private final static String LOG = App.LOG;
public HomePhotoAdapter(Activity a, List<? super IMedia> media)
throws NullPointerException {
this.media = media;
this.a = a;
li = LayoutInflater.from(a);
}
public void update(List<IMedia> newMedia) {
media = newMedia;
notifyDataSetChanged();
}
public void update(IMedia newMedia) {
media.add(newMedia);
notifyDataSetChanged();
}
@Override
public int getCount() {
if (media != null)
return media.size();
else
return 0;
}
public Object getObjectFromIndex(int position) {
if (position >= 0 && position < getCount())
return media.get(position);
return null;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
@Override
public void destroyItem(View container, int position, Object object) {
destroyItem((ViewGroup) container, position, object);
}
@Override
public Object instantiateItem(View container, int position) {
return instantiateItem((ViewGroup) container, position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
IMedia m = (IMedia) media.get(position);
View root = li.inflate(R.layout.adapter_home_photo, container, false);
RoundedImageView view = (RoundedImageView) root.findViewById(R.id.ivPhoto);
try {
Bitmap bitmap = m.getThumbnail(400);
view.setImageBitmap(bitmap);
} catch (NullPointerException e) {
view.setImageDrawable(a.getResources().getDrawable(
R.drawable.ic_action_video));
}
View videoSymbol = root.findViewById(R.id.ivVideoSymbol);
if (m instanceof IVideo)
videoSymbol.setVisibility(View.VISIBLE);
else
videoSymbol.setVisibility(View.GONE);
root.setTag(m);
container.addView(root);
return root;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
container.removeView(view);
}
@Override
public int getItemPosition(Object object) {
IMedia m = (IMedia) ((View) object).getTag();
if (media != null) {
for (int i = 0; i < media.size(); i++) {
if (media.get(i) == m)
return i;
}
}
return POSITION_NONE;
}
}