package com.wise.extend;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import com.wise.data.AdressData;
import com.wise.pubclas.Constant;
import com.wise.pubclas.GetSystem;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import com.wise.sql.DBExcute;
import com.wise.wawc.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
/**
* 地点信息
* @author honesty
*/
public class AdressAdapter extends BaseAdapter{
private static final String TAG = "AdressAdapter";
Context context;
Activity mActivity;
List<AdressData> adressDatas;
LayoutInflater mInflater;
ProgressDialog myDialog = null;
private MyHandler myHandler = null;
private static final int addFavorite = 1;
int index;
ForegroundColorSpan blackSpan;
ForegroundColorSpan graySpan;
public AdressAdapter(Context context,List<AdressData> adressDatas,Activity mActivity){
this.context = context;
this.adressDatas = adressDatas;
this.mActivity = mActivity;
mInflater = LayoutInflater.from(context);
myHandler = new MyHandler();
blackSpan = new ForegroundColorSpan(context.getResources().getColor(R.color.common));
graySpan = new ForegroundColorSpan(context.getResources().getColor(R.color.common_inactive));
}
@Override
public int getCount() {
return adressDatas.size();
}
@Override
public Object getItem(int arg0) {
return adressDatas.get(arg0);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_dealadress, null);
holder = new ViewHolder();
holder.tv_item_dealadress_name = (TextView) convertView.findViewById(R.id.tv_item_dealadress_name);
holder.tv_item_dealadress_adress = (TextView)convertView.findViewById(R.id.tv_item_dealadress_adress);
holder.tv_item_dealadress_phone = (TextView)convertView.findViewById(R.id.tv_item_dealadress_phone);
holder.iv_Collect = (ImageView)convertView.findViewById(R.id.iv_Collect);
holder.iv_location = (ImageView)convertView.findViewById(R.id.iv_location);
holder.iv_tel = (ImageView)convertView.findViewById(R.id.iv_tel);
holder.iv_share = (ImageView)convertView.findViewById(R.id.iv_share);
holder.ll_adress_tel = (RelativeLayout)convertView.findViewById(R.id.ll_adress_tel);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final AdressData adressData = adressDatas.get(position);
String distance = "";
if(adressData.getDistance() != -1){
distance = d(adressData.getDistance());
String str = adressData.getName() + distance;
SpannableStringBuilder builder = new SpannableStringBuilder(str);
builder.setSpan(blackSpan, 0, adressData.getName().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(graySpan, adressData.getName().length(), str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.tv_item_dealadress_name.setText(builder);
}else{
holder.tv_item_dealadress_name.setText(adressData.getName());
}
holder.tv_item_dealadress_adress.setText("地址:" + adressData.getAdress());
holder.tv_item_dealadress_phone.setText("电话:" +adressData.getPhone());
if(adressData.getPhone() == null || adressData.getPhone().equals("")){
holder.ll_adress_tel.setVisibility(View.GONE);
}else{
holder.ll_adress_tel.setVisibility(View.VISIBLE);
}
if(adressData.isIs_collect()){
holder.iv_Collect.setImageResource(R.drawable.body_icon_collect_press);
}else{
holder.iv_Collect.setImageResource(R.drawable.collect);
}
holder.iv_share.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(onCollectListener != null){
onCollectListener.OnShare(index);
}
}
});
//收藏
holder.iv_Collect.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//TODO 更新服务器 成功之后再操作 数据库
if("".equals(Variable.auth_code)){
Toast.makeText(context, "请登录",Toast.LENGTH_SHORT).show();
return;
}else{
if(!adressData.isIs_collect()){
index = position;
myDialog = ProgressDialog.show(context,"提示", "收藏中...");
myDialog.setCancelable(true);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("cust_id", Variable.cust_id));
params.add(new BasicNameValuePair("name", adressData.getName()));
params.add(new BasicNameValuePair("address", adressData.getAdress()));
params.add(new BasicNameValuePair("tel", adressData.getPhone()));
params.add(new BasicNameValuePair("lon", String.valueOf(adressData.getLon())));
params.add(new BasicNameValuePair("lat", String.valueOf(adressData.getLat())));
new Thread(new NetThread.postDataThread(myHandler, Constant.BaseUrl + "favorite?auth_code=" + Variable.auth_code, params, addFavorite,position)).start();
}
}
}
});
//导航
holder.iv_location.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
GeoPoint point = new GeoPoint((int) (Variable.Lat * 1E6),(int) (Variable.Lon * 1E6));
GeoPoint point1 = new GeoPoint((int) (adressData.getLat() * 1E6),(int) (adressData.getLon() * 1E6));
System.out.println(Variable.Lat + "/" + Variable.Lat);
System.out.println(adressData.getLat() + "/" + adressData.getLat());
GetSystem.FindCar(mActivity, point, point1, "point", "point1");
}
});
//拨打电话
holder.iv_tel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+ adressData.getPhone()));
mActivity.startActivity(intent);
}
});
return convertView;
}
private class ViewHolder {
TextView tv_item_dealadress_name,tv_item_dealadress_adress,tv_item_dealadress_phone;
ImageView iv_Collect,iv_location,iv_tel,iv_share;
RelativeLayout ll_adress_tel;
}
class MyHandler extends Handler{
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what){
case addFavorite:
myDialog.dismiss();
Log.e("执行添加的结果:",msg.obj.toString());
try {
JSONObject jsonObject = new JSONObject(msg.obj.toString());
if(jsonObject.getString("status_code").equals("0")){
AdressData adressData = adressDatas.get(msg.arg1);
DBExcute dbExcute = new DBExcute();
ContentValues values = new ContentValues();
values.put("Cust_id", Variable.cust_id);
values.put("favorite_id", jsonObject.getString("favorite_id"));
values.put("name", adressData.getName());
values.put("address", adressData.getAdress());
values.put("tel", adressData.getPhone());
values.put("lon", adressData.getLon());
values.put("lat", adressData.getLat());
dbExcute.InsertDB(mActivity, values, Constant.TB_Collection);
System.out.println(adressData.toString());
Toast.makeText(mActivity, "添加成功", Toast.LENGTH_SHORT).show();
if(onCollectListener != null){
onCollectListener.OnCollect(index);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
}
private String d(int Distance){
if(Distance > 1000){
return " (" +(int)Distance/1000 + "km)";
}else{
return " (" +Distance + "m)";
}
}
OnCollectListener onCollectListener;
public void setOnCollectListener(OnCollectListener onCollectListener){
this.onCollectListener = onCollectListener;
}
public interface OnCollectListener {
public abstract void OnCollect(int index);
public abstract void OnShare(int index);
}
}