package com.example.lovetalk.adapter;

import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVFile;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.AVQuery;
import com.avos.avoscloud.AVUser;
import com.avos.avoscloud.FindCallback;
import com.avos.avoscloud.GetCallback;
import com.avos.avoscloud.GetDataCallback;
import com.avos.avoscloud.LogUtil.log;
import com.example.lovetalk.R;
import com.example.lovetalk.activity.MeetActivity;
import com.example.lovetalk.service.UserService;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.Image;
import android.os.AsyncTask;
import android.os.Handler;
import android.sax.StartElementListener;
import android.support.v4.util.LruCache;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MeetAdapter extends BaseAdapter {
	private List<HashMap<String, Object>> MeetList;
	private Context context;

	public MeetAdapter(Context context, List<HashMap<String, Object>> MeetList) {
		this.context = context;
		this.MeetList = MeetList;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return MeetList.size();
	}

	public static class ViewHolder {
		public ImageView meet_avatar = null;
		public TextView meet_times = null;
		public TextView meet_name = null;
	}

	public String getAvatarUrl(AVUser user) {
		AVFile avatar = user.getAVFile("avatar");
		if (avatar != null) {
			return avatar.getUrl();
		} else {
			return null;
		}
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		final Map<String, Object> item = new HashMap<String, Object>();

		AVUser user = (AVUser) MeetList.get(position).get("user");
		String name = user.getUsername();
		AVFile avatar = user.getAVFile("avatar");
		String avatarUrl = getAvatarUrl(user);
		String times = MeetList.get(position).get("times").toString();
		times = "相遇" + times + "次";

		item.put("name", name);
		item.put("avatar", avatarUrl);
		item.put("times", times);

		return item;

	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		final ViewHolder viewHolder;
		if (convertView == null) {
			LayoutInflater inflater = LayoutInflater.from(context);
			convertView = inflater.inflate(R.layout.meetinginfo_cell, null);
			viewHolder = new ViewHolder();

			viewHolder.meet_avatar = (ImageView) convertView.findViewById(R.id.avatar);
			viewHolder.meet_times = (TextView) convertView.findViewById(R.id.times);
			viewHolder.meet_name = (TextView) convertView.findViewById(R.id.name);

			convertView.setTag(viewHolder);
		} else {
			viewHolder = (ViewHolder) convertView.getTag();
		}
		final Map<String, Object> map = (Map<String, Object>) getItem(position);
		viewHolder.meet_avatar.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				AVUser user = (AVUser) MeetList.get(position).get("user");
				String userid = user.getObjectId();
				// TODO Auto-generated method stub
				MeetActivity.goMeetActivity(context, userid);
			}
		});
		initItem(map, position, viewHolder);
		return convertView;
	}

	private void initItem(Map<String, Object> item, final int position, final ViewHolder viewHolder) {

		if (item != null) {
			viewHolder.meet_times.setText(item.get("times").toString());
			viewHolder.meet_name.setText(item.get("name").toString());
			if (item.get("avatar") != null) {
				UserService.displayAvatar(item.get("avatar").toString(), viewHolder.meet_avatar);
			}

		}
	}


}