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.TextView; import android.widget.Toast; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.hua.goddess.R; import com.hua.goddess.activites.BusSiteDetailActivity; import com.hua.goddess.base.communicate.GetBusLineDetailInterface; import com.hua.goddess.dao.BusCollectDao; import com.hua.goddess.dao.DBHelper; import com.hua.goddess.vo.BusLineDetailListVo; import com.hua.goddess.vo.BusLineDetailVo; import com.hua.goddess.vo.BusSiteVo; import com.hua.goddess.vo.StandInfoVo; import com.umeng.analytics.MobclickAgent; public class BusLineDetailFragment extends Fragment { private View container_view; private LayoutInflater inflater; private LinearLayout container_lin; private Handler handler = new Handler(); private BusLineDetailVo line_detail; private BusLineDetailListVo bldlv; private ArrayList<StandInfoVo> list; private PullToRefreshListView mPullRefreshListView; private Context context; private LineDetailItemHolder holder; private BusLineDetailAdapter bAdapter; private String guid; private boolean isCollect; private DBHelper mDbHelper; private BusCollectDao collectDao; private ImageView favoutite; public BusLineDetailFragment() { } public BusLineDetailFragment(String guid) { this.guid = guid; } @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 (guid != null && !guid.equals("")) { new getBusLineDetailThread().start(); isCollect = collectDao.isExistLine(guid); } return container_view; } private void initView() { View view = inflater.inflate(R.layout.bus_line_detail, null); TextView detail_title = (TextView) view .findViewById(R.id.bus_detail_title); detail_title.setText(line_detail.getLName() + "路"); 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.deleteBusLine(guid); } else { isCollect = true; favoutite .setBackgroundResource(R.drawable.bus_ico_fav_full); Toast.makeText(context, R.string.add_collect, Toast.LENGTH_SHORT).show(); collectDao.addBusLine(line_detail); } 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 getBusLineDetailThread().start(); } }); bAdapter = new BusLineDetailAdapter(); 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 getBusLineDetailThread extends Thread { @Override public void run() { try { bldlv = GetBusLineDetailInterface.getNetData(guid); if (bldlv == null) return; line_detail = bldlv.getList(); if (line_detail == null) return; list = line_detail.getStandInfo(); 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 BusLineDetailAdapter 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_line_detail_item, null); holder = new LineDetailItemHolder(); holder.content_img = (ImageView) convertView .findViewById(R.id.bus_line_detail_content_img); holder.station_name = (TextView) convertView .findViewById(R.id.bus_line_detail_content_station_name); holder.intime = (TextView) convertView .findViewById(R.id.bus_line_detail_content_intime); convertView.setTag(holder); } else { holder = (LineDetailItemHolder) convertView.getTag(); } final StandInfoVo vo = list.get(position); holder.station_name.setText(vo.getSName()); if ("".equals(vo.getInTime())) { holder.content_img.setBackgroundResource( R.drawable.bus_ico_buspoint_on_line); holder.intime.setVisibility(View.GONE); } else { holder.content_img.setBackgroundResource( R.drawable.bus_ico_buspoint_on_new); holder.intime.setVisibility(View.VISIBLE); holder.intime.setText("进站时间 " + vo.getInTime()); } convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if ("NODATA".equals(vo.getSCode())) { Toast.makeText(getActivity(), R.string.bus_no_data, Toast.LENGTH_SHORT).show(); } else { Intent intent = new Intent(getActivity(), BusSiteDetailActivity.class); Bundle bundle = new Bundle(); BusSiteVo site_vo = new BusSiteVo(); site_vo.setName(vo.getSName()); site_vo.setNoteGuid(vo.getSCode()); bundle.putParcelable("site_detail", site_vo); intent.putExtras(bundle); getActivity().startActivity(intent); getActivity().overridePendingTransition( R.anim.abc_fade_in, R.anim.abc_fade_out); } } }); return convertView; } } class LineDetailItemHolder { ImageView content_img; TextView station_name; TextView intime; } public void onResume() { super.onResume(); MobclickAgent.onPageStart("BusLineDetailFragment"); // 统计页面 } public void onPause() { super.onPause(); MobclickAgent.onPageEnd("BusLineDetailFragment"); } }