package com.snail.travellingTrail.main.controller;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import net.tsz.afinal.FinalBitmap;
import net.tsz.afinal.FinalHttp;
import net.tsz.afinal.http.AjaxCallBack;
import zrc.widget.SimpleFooter;
import zrc.widget.SimpleHeader;
import zrc.widget.ZrcListView;
import zrc.widget.ZrcListView.OnStartListener;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.snail.travellingTrail.R;
import com.snail.travellingTrail.common.RequestAddress;
import com.snail.travellingTrail.common.ResponseList;
import com.snail.travellingTrail.common.TravellingTrailApplication;
import com.snail.travellingTrail.common.utils.JsonUtil;
import com.snail.travellingTrail.common.utils.PhoneInfo;
import com.snail.travellingTrail.common.views.CircleImageView;
import com.snail.travellingTrail.mine.controller.MineAdapter;
import com.snail.travellingTrail.travelNotes.model.MapImage;
public class MineFragment extends Fragment
{
View frameView,actionView,header,divider;
Context context;
ZrcListView mZrcListView;
LinearLayout mineLlyt;
ImageView mapIv;
CircleImageView avatarIv,avatarIv2;
TextView nickNameTv,addressTv,sinatureTv,nickNameTv2,addressTv2,sinatureTv2;
Button followButton, followButton2;
View include;
FinalHttp mDataFinalHttp,mTripAllFh,mTripFootPoint;
MineAdapter mineAdapter;
FinalBitmap mFinalBitmap,mFinalBitmap2;
private final static String TAG = "MineFragment";
private final static int UPDATE = 1;
private final static int AGE = 2;
private static boolean REFRASH = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
frameView = inflater.inflate(R.layout.fragment_mine, null);
findid();
return frameView;
}
public void findid() {
actionView = LayoutInflater.from(getActivity()).inflate(R.layout.frag_mine_header_action, null);
header = View.inflate(getActivity(), R.layout.frag_mine_header, null);//头部内容
divider = View.inflate(getActivity(), R.layout.divider, null);
mZrcListView = (ZrcListView)frameView.findViewById(R.id.frag_mine_lv_travellingTrail);
include = (View)frameView.findViewById(R.id.frag_mine_include);
avatarIv = (CircleImageView)actionView.findViewById(R.id.frag_mine_header_action_iv_avatar);
nickNameTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_nickname);
// ageTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_age);
addressTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_address);
sinatureTv = (TextView)actionView.findViewById(R.id.frag_mine_header_action_sinature);
mapIv = (ImageView)header.findViewById(R.id.fragment_mine_header_iv_map);
followButton = (Button) actionView.findViewById(R.id.frag_mine_header_action_btn_follow);
followButton.setVisibility(View.INVISIBLE);
setListener();
}
private void setListener()
{
mZrcListView.setOnRefreshStartListener(new zrcListViewRefresh());
init();
}
class zrcListViewRefresh implements OnStartListener{
@Override
public void onStart() {
http(true);
}
}
private void init() {
setListView();
mFinalBitmap = FinalBitmap.create(getActivity());
mFinalBitmap.configLoadingImage(R.drawable.bg_default_photo);
mFinalBitmap2 = FinalBitmap.create(getActivity());
mFinalBitmap2.configLoadingImage(R.drawable.bg_default_photo);
LayoutParams laParams=(LayoutParams)mapIv.getLayoutParams();
laParams.height =(int)(PhoneInfo.getScreenWidth(getActivity())/5)*4;
laParams.width = (int)(PhoneInfo.getScreenWidth(getActivity()));
mZrcListView.addHeaderView(header);//添加头部
mZrcListView.addHeaderView(actionView);//ListView条目中的悬浮部分 添加到头部
mZrcListView.addHeaderView(divider);
http(false);
mZrcListView.setOnScrollListener(new ZrcListView.OnScrollMyListener() {
@Override
public void onScrollStateChanged(ZrcListView view, int scrollState) {
// TODO Auto-generated method stub
}
@Override
public void onScroll(ZrcListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem >= 1) {
include.setVisibility(View.VISIBLE);
actionView.setVisibility(View.INVISIBLE);
avatarIv2 = (CircleImageView)frameView.findViewById(R.id.frag_mine_header_action_iv_avatar2);
nickNameTv2 = (TextView)frameView.findViewById(R.id.frag_mine_header_action_nickname2);
// ageTv2 = (TextView)frameView.findViewById(R.id.frag_mine_header_action_age2);
addressTv2 = (TextView)frameView.findViewById(R.id.frag_mine_header_action_address2);
sinatureTv2 = (TextView)frameView.findViewById(R.id.frag_mine_header_action_sinature2);
followButton2 = (Button) frameView.findViewById(R.id.frag_mine_header_action_btn_follow2);
// followButton2.setVisibility(View.INVISIBLE);
mFinalBitmap2.display(avatarIv2, ResponseList.SelfInfoMap.get("Us_Avatar"));
nickNameTv2.setText(ResponseList.SelfInfoMap.get("Us_Nickname"));
// ageTv2.setText("23岁");
addressTv2.setText(ResponseList.SelfInfoMap.get("Us_Location"));
sinatureTv2.setText(ResponseList.SelfInfoMap.get("Us_Sinature"));
} else {
include.setVisibility(View.GONE);
actionView.setVisibility(View.VISIBLE);
}
}
});
}
private void setListView() {
// 设置下拉刷新的样式
SimpleHeader header = new SimpleHeader(getActivity());
header.setTextColor(getResources().getColor(R.color.main_green));
header.setCircleColor(getResources().getColor(R.color.main_green));
mZrcListView.setHeadable(header);
// 设置加载更多的样式
SimpleFooter footer = new SimpleFooter(getActivity());
footer.setCircleColor(getResources().getColor(R.color.main_green));
mZrcListView.setFootable(footer);
// 设置列表项出现动画
mZrcListView.setItemAnimForTopIn(R.anim.anim_topitem_in);
mZrcListView.setItemAnimForBottomIn(R.anim.anim_bottomitem_in);
mZrcListView.setFooterDividersEnabled(false);
}
private void http(final boolean REFRASH){
mDataFinalHttp = new FinalHttp();
mTripAllFh = new FinalHttp();
mTripFootPoint = new FinalHttp();
long userid;
if (TravellingTrailApplication.loginUser != null)
{
userid = TravellingTrailApplication.loginUser.getUs_Info_Us_Id();
mTripFootPoint.get(RequestAddress.PERSONAL_TRAVEL + "?UserId=" + userid + "&status=9",
new AjaxCallBack<Object>()
{
@Override
public void onSuccess(Object t)
{
analyzeFootpointjson(t.toString());
super.onSuccess(t);
}
@Override
public void onFailure(Throwable t, int errorNo,
String strMsg)
{
super.onFailure(t, errorNo, strMsg);
}
});
mDataFinalHttp.get(RequestAddress.MINE_DATA + userid,
new AjaxCallBack<Object>()
{
@Override
public void onFailure(Throwable t, int errorNo,
String strMsg)
{
Log.i(TAG, strMsg.toString());
super.onFailure(t, errorNo, strMsg);
}
@Override
public void onSuccess(Object t)
{
Log.i(TAG, t.toString());
analyzeInfojson(t.toString(), null, REFRASH);
super.onSuccess(t);
}
});
//获取个人已结束的旅程
mTripAllFh.get(RequestAddress.PERSONAL_TRAVEL + "?UserId=" + userid,
new AjaxCallBack<Object>()
{
@Override
public void onFailure(Throwable t, int errorNo,
String strMsg)
{
mZrcListView.setRefreshFail("加载失败");
super.onFailure(t, errorNo, strMsg);
}
@Override
public void onSuccess(Object t)
{
analyzejson(t.toString(), null, REFRASH);
super.onSuccess(t);
}
});
}
}
protected void analyzeFootpointjson(String jsonString){
List<Map<String, String>> list = JsonUtil.parseJson1(jsonString, null);
ResponseList.SelfTripPointList = list;
List<List<Map<String, String>>> list2 = new ArrayList<List<Map<String,String>>>() ;
for(int i = 0; i<list.size();i++){
list2.add(JsonUtil.parseJson1(list.get(i).get("FootprintSummary"), null));
}
if (list2.size() < 1)
{
mFinalBitmap.display(mapIv, MapImage.getNoneMapUrl());
}else {
mFinalBitmap.display(mapIv, MapImage.getAllTripMapImgUrl(list2, context));
}
Log.i(TAG, "analyzeFootpointjson "+list2.toString());
}
protected void analyzeInfojson(String jsonString,String tagName,boolean refrash){
Map<String, String> map = JsonUtil.parseJson1(jsonString);
ResponseList.SelfInfoMap = map;
Log.i(TAG, map.size()+"");
mFinalBitmap.display(avatarIv, map.get("Us_Avatar"));
nickNameTv.setText(map.get("Us_Nickname"));
getAge(map.get("Us_Birthday"));
addressTv.setText(map.get("Us_Location"));
sinatureTv.setText(map.get("Us_Sinature"));
// ResponseList.avatarBitmap = mFinalBitmap;
}
//由获取用户年龄
@SuppressWarnings("deprecation")
private void getAge(final String birthday){
new Thread(new Runnable() {
@Override
public void run() {
String age = null;
URL url;
Date date = null ;
try {
url = new URL("http://www.baidu.com");
URLConnection uc = url.openConnection();// 生成连接对象
uc.connect(); // 发出连接
long ld = uc.getDate(); // 取得网站日期时间
date = new Date(ld); // 转换为标准时间对象
// 分别取得时间中的小时,分钟和秒,并输出
Log.i(TAG, date.getYear()+" is year from network");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 取得资源对象
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Log.i(TAG, Integer.parseInt(birthday.split("-")[0])+"");
// age = String.valueOf(date.getYear()+1900-Integer.parseInt(birthday.split("-")[0]));
// sendMessage(AGE, age);
}
}).start();
}
protected void analyzejson(String jsonString,String tagName,boolean refrash) {
List<Map<String, String>> list = JsonUtil.parseJson1(jsonString, tagName);
ResponseList.SelfTripList = list;
if(refrash && mineAdapter!=null){
mineAdapter.setData(list);
}else{
mineAdapter = new MineAdapter(getActivity(), list,mFinalBitmap);
mZrcListView.setAdapter(mineAdapter);
}
run();
}
private void run() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sendMessage(UPDATE,"");
}
}).start();
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what){
case UPDATE:
mZrcListView.setRefreshSuccess("加载成功");
mineAdapter.notifyDataSetChanged();
break;
// case AGE:
// ageTv.setText(msg.obj.toString()+"岁");
// break;
}
super.handleMessage(msg);
}
};
private void sendMessage(int what,Object obj){
Message msg = Message.obtain();
msg.what = what;
msg.obj = obj;
handler.sendMessage(msg);
}
}