package com.hua.goddess.fragment;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.text.format.DateUtils;
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.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.hua.goddess.R;
import com.hua.goddess.activites.BusLineDetailActivity;
import com.hua.goddess.base.communicate.GetBusSiteDetailInterface;
import com.hua.goddess.dao.BusCollectDao;
import com.hua.goddess.dao.DBHelper;
import com.hua.goddess.vo.BusSiteDetailListVo;
import com.hua.goddess.vo.BusSiteDetailVo;
import com.hua.goddess.vo.BusSiteVo;
import com.umeng.analytics.MobclickAgent;
public class BusSiteDetailFragment extends Fragment {
private View container_view;
private LayoutInflater inflater;
private LinearLayout container_lin;
private Handler handler = new Handler();
private ArrayList<BusSiteDetailVo> list;
private BusSiteDetailListVo bsdlv;
private PullToRefreshListView mPullRefreshListView;
private Context context;
private SiteDetailItemHolder holder;
private BusSiteDetailAdapter bAdapter;
private BusSiteVo bus_site_vo;
private ImageView favoutite;
private DBHelper mDbHelper;
private BusCollectDao collectDao;
private boolean isCollect;
private String noteGuid;
public BusSiteDetailFragment() {
}
public BusSiteDetailFragment(BusSiteVo vo) {
this.bus_site_vo = vo;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity();
mDbHelper = new DBHelper(context);
collectDao = new BusCollectDao(mDbHelper);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
this.inflater = inflater;
container_view = inflater.inflate(R.layout.fragment_container, null);
container_lin = (LinearLayout) container_view
.findViewById(R.id.container);
if (bus_site_vo != null) {
new getBusSiteDetailThread().start();
noteGuid = bus_site_vo.getNoteGuid();
isCollect = collectDao.isExistSite(noteGuid);
}
return container_view;
}
private void initView() {
View view = inflater.inflate(R.layout.bus_detail, null);
TextView detail_title = (TextView) view
.findViewById(R.id.bus_detail_title);
detail_title.setText(bus_site_vo.getName());
RelativeLayout position = (RelativeLayout) view
.findViewById(R.id.bus_detail_title_position_layout);
if (bus_site_vo.getRoad() != null && !"".equals(bus_site_vo.getRoad())) {
position.setVisibility(View.VISIBLE);
TextView position_text = (TextView) view
.findViewById(R.id.bus_detail_position_text);
position_text.setText("位于" + bus_site_vo.getRoad()
+ bus_site_vo.getDirect());
} else {
position.setVisibility(View.GONE);
}
favoutite = (ImageView) view.findViewById(R.id.bus_detail_favourite);
if (isCollect) {
favoutite.setBackgroundResource(R.drawable.bus_ico_fav_full);
} else {
favoutite.setBackgroundResource(R.drawable.bus_ico_fav);
}
favoutite.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
favoutite.setClickable(false);
if (isCollect) {
isCollect = false;
favoutite.setBackgroundResource(R.drawable.bus_ico_fav);
Toast.makeText(context, R.string.del_collect,
Toast.LENGTH_SHORT).show();
collectDao.deleteBusSite(noteGuid);
} else {
isCollect = true;
favoutite
.setBackgroundResource(R.drawable.bus_ico_fav_full);
Toast.makeText(context, R.string.add_collect,
Toast.LENGTH_SHORT).show();
collectDao.addBusSite(bus_site_vo);
}
favoutite.setClickable(true);
}
});
mPullRefreshListView = (PullToRefreshListView) view
.findViewById(R.id.bus_detail_list_layout);
// Set a listener to be invoked when the list should be refreshed.
mPullRefreshListView
.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onRefresh(
PullToRefreshBase<ListView> refreshView) {
String label = DateUtils.formatDateTime(context,
System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL);
// Update the LastUpdatedLabel
refreshView.getLoadingLayoutProxy()
.setLastUpdatedLabel(label);
// Do work to refresh the list here.
new getBusSiteDetailThread().start();
}
});
// Add an end-of-list listener
mPullRefreshListView
.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
@Override
public void onLastItemVisible() {
Toast.makeText(context, "End of List!",
Toast.LENGTH_SHORT).show();
}
});
bAdapter = new BusSiteDetailAdapter();
ListView actualListView = mPullRefreshListView.getRefreshableView();
// Need to use the Actual ListView when registering for Context Menu
registerForContextMenu(actualListView);
actualListView.setAdapter(bAdapter);
container_lin.removeAllViews();
container_lin.addView(view);
}
class getBusSiteDetailThread extends Thread {
@Override
public void run() {
try {
bsdlv = GetBusSiteDetailInterface.getNetData(noteGuid);
if (bsdlv == null)
return;
list = bsdlv.getList();
if (list != null && list.size() > 0) {
handler.post(new Runnable() {
@Override
public void run() {
if (mPullRefreshListView != null
&& bAdapter != null) {
bAdapter.notifyDataSetChanged();
// Call onRefreshComplete when the list has been
// refreshed.
mPullRefreshListView.onRefreshComplete();
} else {
initView();
}
}
});
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class BusSiteDetailAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.bus_station_detail_item, null);
holder = new SiteDetailItemHolder();
holder.line_name = (TextView) convertView
.findViewById(R.id.bus_station_line_name);
holder.text1 = (TextView) convertView
.findViewById(R.id.bus_station_text1);
holder.detail_count = (TextView) convertView
.findViewById(R.id.bus_station_detail_count);
holder.text2 = (TextView) convertView
.findViewById(R.id.bus_station_text2);
convertView.setTag(holder);
} else {
holder = (SiteDetailItemHolder) convertView.getTag();
}
final BusSiteDetailVo vo = list.get(position);
holder.line_name.setText(vo.getLName());
int distince = Integer.valueOf(vo.getDistince()) - 1;
if (distince == 0) {
holder.detail_count.setText(R.string.pull_in_site);
holder.text1.setVisibility(View.INVISIBLE);
holder.text2.setVisibility(View.GONE);
} else if (distince < 0) {
holder.detail_count.setText(R.string.due_out);
holder.text1.setVisibility(View.VISIBLE);
holder.text1.setText(R.string.next_bus);
holder.text2.setVisibility(View.GONE);
} else {
holder.detail_count.setText(distince + "");
holder.text1.setVisibility(View.VISIBLE);
holder.text1.setText(R.string.next_distance);
holder.text2.setVisibility(View.VISIBLE);
}
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),
BusLineDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("Guid", vo.getGuid());
intent.putExtras(bundle);
getActivity().startActivity(intent);
getActivity().overridePendingTransition(R.anim.abc_fade_in,
R.anim.abc_fade_out);
}
});
return convertView;
}
}
class SiteDetailItemHolder {
TextView line_name;
TextView text1;
TextView detail_count;
TextView text2;
}
public void onResume() {
super.onResume();
MobclickAgent.onPageStart("BusSiteDetailFragment"); // 统计页面
}
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("BusSiteDetailFragment");
}
}