Last active
August 29, 2015 14:01
-
-
Save Yosuke-Kawakami/803e0233431cc00e4fa6 to your computer and use it in GitHub Desktop.
https://gist.github.com/Yosuke-Kawakami/9777872 の派生。Volley の ImageLoader を拡張して画像取得中は ProgressBar を表示させるようにしてみた。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:orientation="horizontal" > | |
<ProgressBar | |
android:id="@+id/row_progress" | |
style="@android:style/Widget.ProgressBar.Large.Inverse" | |
android:layout_width="wrap_content" | |
android:layout_height="50sp" | |
android:layout_margin="10sp" /> | |
<ImageView | |
android:id="@+id/row_image" | |
android:layout_width="wrap_content" | |
android:layout_height="50sp" | |
android:layout_margin="10sp" | |
android:adjustViewBounds="true" | |
android:contentDescription="@string/app_name" | |
android:scaleType="centerCrop" /> | |
<TextView | |
android:id="@+id/row_title" | |
android:layout_width="wrap_content" | |
android:layout_height="fill_parent" | |
android:choiceMode="singleChoice" | |
android:gravity="center_vertical" | |
android:text="@string/app_name" /> | |
</LinearLayout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.example.test; | |
import java.util.List; | |
import com.android.volley.RequestQueue; | |
import com.android.volley.toolbox.ImageLoader; | |
import com.android.volley.toolbox.ImageLoader.ImageContainer; | |
import com.android.volley.toolbox.ImageLoader.ImageListener; | |
import com.android.volley.toolbox.Volley; | |
import jp.co.deltawing.tweetline.tour2.BitmapCache; | |
import jp.co.deltawing.tweetline.tour2.MyImageLoader; | |
import jp.co.deltawing.tweetline.tour2.R; | |
import android.content.Context; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.ArrayAdapter; | |
import android.widget.ImageView; | |
import android.widget.ProgressBar; | |
import android.widget.TextView; | |
public class CustomAdapter extends ArrayAdapter<CustomData>{ | |
private LayoutInflater _layoutInflater; | |
private RequestQueue _requestQueue; | |
private ImageLoader _imageLoader; | |
public CustomAdapter(Context context, int textViewResourceId, List<CustomData> objects){ | |
super(context, textViewResourceId, objects); | |
_layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
_requestQueue = Volley.newRequestQueue(getContext()); | |
_imageLoader = new ImageLoader(_requestQueue, new BitmapCache()); | |
} | |
@Override | |
public View getView(int position, View convertView, ViewGroup parent) { | |
ViewHolder viewHolder; | |
if(convertView != null){ | |
viewHolder = (ViewHolder) convertView.getTag(); | |
} | |
else{ | |
convertView = _layoutInflater.inflate(R.layout.custom_list, null); | |
viewHolder = new ViewHolder(); | |
viewHolder.progressBar = (ProgressBar)convertView.findViewById(R.id.row_progress); | |
viewHolder.textView = (TextView)convertView.findViewById(R.id.row_title); | |
viewHolder.imageView = (ImageView)convertView.findViewById(R.id.row_image); | |
convertView.setTag(viewHolder); | |
} | |
CustomData item = (CustomData)getItem(position); | |
viewHolder.textView.setText(item.getTitle()); | |
ImageContainer imageContainer = (ImageContainer)viewHolder.imageView.getTag(); | |
if(imageContainer != null){ | |
imageContainer.cancelRequest(); | |
} | |
ImageListener imageListener = MyImageLoader.getImageListener(viewHolder.imageView, viewHolder.progressBar, android.R.drawable.ic_delete); | |
viewHolder.imageView.setTag(_imageLoader.get(item.getBitmapUrl(), imageListener)); | |
return convertView; | |
} | |
/* | |
* | |
* | |
* | |
* | |
* | |
* | |
* 内部クラスなー | |
* | |
*/ | |
private class ViewHolder { | |
ProgressBar progressBar; | |
TextView textView; | |
ImageView imageView; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.example.test; | |
import android.view.View; | |
import android.widget.ImageView; | |
import android.widget.ProgressBar; | |
import com.android.volley.RequestQueue; | |
import com.android.volley.VolleyError; | |
import com.android.volley.toolbox.ImageLoader; | |
public class MyImageLoader extends ImageLoader { | |
public MyImageLoader(RequestQueue queue, ImageCache imageCache) { | |
super(queue, imageCache); | |
} | |
/** | |
* | |
* @param view | |
* @param progressBar | |
* @param errorImageResId | |
* @return | |
*/ | |
public static ImageListener getImageListener(final ImageView view, final ProgressBar progressBar, final int errorImageResId) { | |
return new ImageListener() { | |
@Override | |
public void onErrorResponse(VolleyError error) { | |
if (errorImageResId != 0) { | |
view.setImageResource(errorImageResId); | |
} | |
else { | |
view.setImageResource(android.R.drawable.ic_menu_report_image); | |
} | |
if (progressBar != null) { | |
progressBar.setVisibility(View.GONE); | |
} | |
} | |
@Override | |
public void onResponse(ImageContainer response, boolean isImmediate) { | |
if (response.getBitmap() != null) { | |
view.setImageBitmap(response.getBitmap()); | |
if (progressBar != null) { | |
progressBar.setVisibility(View.GONE); | |
} | |
} | |
} | |
}; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment