package lee.devis.joker.adapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
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.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import org.w3c.dom.Text;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import lee.devis.joker.Entity.Joke;
import lee.devis.joker.Entity.User;
import lee.devis.joker.HttpMethod.ImageAsyncTask;
import lee.devis.joker.MyApplication;
import lee.devis.joker.R;
import lee.devis.joker.ShowPicActivity;
/**
* Description:
* Created by Devis on 14-7-17.
*/
public class JokeListViewAdapter extends BaseAdapter {
private List<Joke> jokes;
private Context context;
private DisplayImageOptions options;
private ImageLoader imageLoader;
public JokeListViewAdapter(Context context, List<Joke> data) {
this.jokes = data;
this.context = context;
imageLoader = ImageLoader.getInstance();
options = new DisplayImageOptions.Builder()
.showImageOnLoading(null)
.showImageForEmptyUri(null)
.showImageOnFail(null)
.cacheInMemory(true)
.cacheOnDisk(true)
.considerExifParams(true)
.bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(388))
.build();
}
@Override
public int getCount() {
return jokes == null ? 0 : jokes.size();
}
@Override
public Object getItem(int position) {
return jokes.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.joke_item, null);
viewHolder = new ViewHolder();
viewHolder.userNam = (TextView) convertView.findViewById(R.id.name);
viewHolder.content = (TextView) convertView.findViewById(R.id.content);
viewHolder.updateTime = (TextView) convertView.findViewById(R.id.time);
viewHolder.icon = (ImageView) convertView.findViewById(R.id.icon);
viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
User user = jokes.get(position).getUser();
if (user != null) {
viewHolder.userNam.setText(jokes.get(position).getUser().getLogin());
if(user.getIcon() != null && !user.getIcon().equals("null")){
String url = "http://pic.qiushibaike.com/system/avtnew/"+user.getId().substring(0,user.getId().length()-4)+"/"+user.getId()+"/thumb/"+user.getIcon();
Log.e("TTTT", "url = " +url);
imageLoader.displayImage(url, viewHolder.icon, options, animateFirstListener);
// new ImageAsyncTask(viewHolder.icon).execute(url);
}
} else {
viewHolder.userNam.setText("匿名用户");
viewHolder.icon.setImageResource(R.drawable.joke);
}
String imageUrl = jokes.get(position).getImage();
if(imageUrl != null && imageUrl.length()>0 && !imageUrl.equals("null")){
String id = jokes.get(position).getId();
String url = "http://pic.qiushibaike.com/system/pictures/"+id.substring(0,id.length()-4)+"/"+id+"/small/"+imageUrl;
final String bigUrl = "http://pic.qiushibaike.com/system/pictures/"+id.substring(0,id.length()-4)+"/"+id+"/medium/"+imageUrl;
Log.e("TTTT", "url = " +url + "\n bigUrl = " + bigUrl);
viewHolder.image.setVisibility(View.VISIBLE);
imageLoader.displayImage(url, viewHolder.image, options, animateFirstListener);
viewHolder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ShowPicActivity.class);
intent.putExtra("url", bigUrl);
context.startActivity(intent);
}
});
// new ImageAsyncTask(viewHolder.image).execute(url);
}else{
viewHolder.image.setVisibility(View.GONE);
}
String content = jokes.get(position).getContent();
if(content!=null && content.length()>0){
viewHolder.content.setText(content);
}else{
viewHolder.content.setText("您好像没有获取到数据哦!~");
}
String time = "更新于 "+jokes.get(position).getCreated_at();
viewHolder.updateTime.setText(time);
return convertView;
}
private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener();
class ViewHolder {
private ImageView icon;
private TextView userNam;
private TextView content;
private TextView updateTime;
private ImageView image;
}
private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {
static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri,view,loadedImage);
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
imageView.setVisibility(View.VISIBLE);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 500);
displayedImages.add(imageUri);
}
}else{
ImageView imageView = (ImageView) view;
imageView.setVisibility(View.GONE);
}
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
// ImageView imageView = (ImageView) view;
// imageView.setVisibility(View.GONE);
}
}
}