package ams.android.linkit.Adapter;
import android.app.FragmentManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import ams.android.linkit.Model.LinkitObject;
import ams.android.linkit.R;
/**
* Created by Aidin on 2/23/2015.
*/
public class AdapterListviewEmpty extends BaseAdapter {
Context context;
FragmentManager fragmentManager;
ArrayList<LinkitObject> items = new ArrayList<LinkitObject>();
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options;
ImageLoadingListener imageListener;
public AdapterListviewEmpty(Context context, FragmentManager fragmentManager, ArrayList<LinkitObject> items) {
this.context = context;
this.fragmentManager = fragmentManager;
this.items = items;
options = new DisplayImageOptions.Builder()
.resetViewBeforeLoading(true)
.showImageOnFail(R.drawable.fail)
.showImageOnLoading(R.drawable.loading)
.showImageForEmptyUri(R.drawable.unlink)
.cacheInMemory(true)
.cacheOnDisk(true)
.preProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return Bitmap.createScaledBitmap(bitmap, 400, 400, true);
}
})
.build();
imageListener = new ImageDisplayListener();
if (!imageLoader.isInited()) {
imageLoader.init(ImageLoaderConfiguration.createDefault(context));
}
imageLoader = ImageLoader.getInstance();
}
@Override
public View getView(final int position, View rootView, ViewGroup parent) {
LayoutInflater inflater = null;
if (inflater == null)
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (rootView == null) rootView = inflater.inflate(R.layout.item_list_empty, null);
ImageView imgProfile = (ImageView) rootView.findViewById(R.id.imgProfile);
TextView txtOwner = (TextView) rootView.findViewById(R.id.txtOwner);
TextView txtDesc = (TextView) rootView.findViewById(R.id.txtDesc);
if (!items.get(position).productDescription.equals("null")) {
txtDesc.setText(items.get(position).productDescription + " \n" + items.get(position).ownerWebsite);
} else {
txtDesc.setText("");
}
if (!items.get(position).owner.equals("null")) {
txtOwner.setText(items.get(position).owner);
} else {
txtOwner.setText("");
}
imageLoader.displayImage(items.get(position).ownerProfilePic, imgProfile, options, imageListener);
return rootView;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
private class ImageDisplayListener extends SimpleImageLoadingListener {
final List<String> displayedImages = Collections
.synchronizedList(new LinkedList<String>());
@Override
public void onLoadingStarted(String imageUri, View view) {
super.onLoadingStarted(imageUri, view);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 0);
displayedImages.add(imageUri);
}
}
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
super.onLoadingCancelled(imageUri, view);
}
}
}