package com.datdo.mobilib.test.imageloader; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ListView; import android.widget.TextView; import com.datdo.mobilib.api.MblApi; import com.datdo.mobilib.api.MblApi.MblApiCallback; import com.datdo.mobilib.api.MblRequest; import com.datdo.mobilib.api.MblResponse; import com.datdo.mobilib.base.MblBaseActivity; import com.datdo.mobilib.base.MblBaseAdapter; import com.datdo.mobilib.test.R; import com.datdo.mobilib.util.MblImageLoader; import com.datdo.mobilib.util.MblSimpleImageLoader; import com.datdo.mobilib.util.MblUtils; import java.util.Map; public class ImageLoaderTestActivity extends MblBaseActivity { private static final String[] LINKS = new String[] { "http://cupcakepedia.com/wp-content/uploads/2013/12/cute-cat-love2.jpg", "http://images.wisegeek.com/young-calico-cat.jpg", "http://2.bp.blogspot.com/-AM6OorTilnA/T7bEVEefD3I/AAAAAAAAGy4/m5Y-u7ohe6U/s640/Beautiful+White+Cute+Cat+Pictures+%253A+Photos+%253A+Wallpapers+11.jpg", "http://www.vetprofessionals.com/catprofessional/images/home-cat.jpg", "https://www.petfinder.com/wp-content/uploads/2012/11/99059361-choose-cat-litter-632x475.jpg", "http://i.dailymail.co.uk/i/pix/2013/12/17/article-2524993-1A158ACB00000578-186_634x400.jpg", "http://exmoorpet.com/wp-content/uploads/2012/08/cat.png", "http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2013/10/30/1383128094134/248b4f05-05f0-449b-9a23-59b82dbc40a3-460x276.jpeg", "http://i.telegraph.co.uk/multimedia/archive/02763/cats_2763799b.jpg", "http://www.thetimes.co.uk/tto/multimedia/archive/00342/114240651_cat_342943c.jpg", "http://www.thetimes.co.uk/tto/multimedia/archive/00342/114240651_cat_342943c.jpg", "http://www.thetimes.co.uk/tto/multimedia/archive/00342/114240651_cat_342943c.jpg", "http://cdn.sheknows.com/articles/2012/10/isolated-cat.jpg", "https://www.friskies.com/Content/images/headers/cat_wet.png", "http://www.projectpawsitive.com/wp-content/uploads/2013/08/CAt_No-Background1.png", "http://upload.wikimedia.org/wikipedia/commons/4/41/Siberischer_tiger_de_edit02.jpg", "http://www.cats.org.uk/uploads/images/pages/photo_latest14.jpg", "https://www.petfinder.com/wp-content/uploads/2012/11/100691619-what-is-cat-fostering-632x475.jpg", "http://news.bbcimg.co.uk/media/images/66791000/jpg/_66791419_cat-norwegian.jpg", "don't-load", "http://should.fail.link", "http://fc06.deviantart.net/fs70/i/2011/194/a/f/bored_cat_by_blueann94-d3nrovc.jpg", "http://i.huffpost.com/gen/1691894/thumbs/o-MONKEY-MASSAGES-CAT-900.jpg?1", "http://www.funchap.com/wp-content/uploads/2014/05/cute-dog-baby-wallpaper.jpg", "http://www.w8themes.com/wp-content/uploads/2013/09/Dog-Computer-Wallpaper.jpg", "http://www.w8themes.com/wp-content/uploads/2013/09/Dog-Computer-Wallpaper.jpg", "http://www.w8themes.com/wp-content/uploads/2013/09/Dog-Computer-Wallpaper.jpg" }; private ListView mListView; private class Adapter extends MblBaseAdapter<String> { public Adapter(String[] links) { for (String l : links) { getData().add(l); } } private MblSimpleImageLoader<String> mImageLoader = new MblSimpleImageLoader<String>() { @Override protected String getItemId(String item) { return item; } @Override protected ImageView getImageViewBoundWithView(View view) { return (ImageView) view.findViewById(R.id.image); } @Override protected String getItemBoundWithView(View view) { return (String) view.getTag(); } @Override protected void retrieveImage(String item, final MblRetrieveImageCallback cb) { MblApi.run(new MblRequest() .setMethod(MblApi.Method.GET) .setUrl(item) .setCacheDuration(Long.MAX_VALUE) .setCallback(new MblApiCallback() { @Override public void onSuccess(MblResponse response) { cb.onRetrievedByteArray(response.getData()); }; @Override public void onFailure(MblResponse response) { cb.onRetrievedError(); } })); } @Override protected void onError(ImageView imageView, String item) { imageView.setImageResource(R.drawable._default); } }; @Override public View getView(int pos, View view, ViewGroup parent) { String link = (String) getItem(pos); if (view == null) { view = getLayoutInflater().inflate(R.layout.cell_image_loader, null); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(ImageLoaderTestActivity.this, ViewImageActivity.class); intent.putExtra("link", (String)v.getTag()); startActivity(intent); } }); } view.setTag(link); mImageLoader.loadImage(view); ((TextView) view.findViewById(R.id.url)).setText(link); return view; } }; @SuppressLint("InflateParams") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mListView = new ListView(this); mListView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); mListView.setBackgroundColor(0xff000000); mListView.setAdapter(new Adapter(LINKS)); setContentView(mListView); } @Override protected void onResume() { super.onResume(); ((Adapter) mListView.getAdapter()).notifyDataSetChanged(); } }