@myron-lee
2015-01-16T12:05:22.000000Z
字数 6142
阅读 1406
每日记录
每个年轻的内心都是复杂纷乱的。有些话不能说出口。
传递与填充数据
- 真实距离不好计算
不在 onCreateView做初始化工作,放到 onActivityCreated 中。在 onCreateView 中只保存一个 rootView 的引用,注意要再 onDestoryView 中把它设为 null。
public class SimpleFragment extends TaskFragment implements OnLoadDataListener{private ViewState mViewState = null;private View mRootView;private LoadDataTask mLoadDataTask;private ProductEntity mProduct;@Overridepublic void onAttach(Activity activity){super.onAttach(activity);}@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setHasOptionsMenu(true);setRetainInstance(true);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){mRootView = inflater.inflate(R.layout.fragment_simple, container, false);return mRootView;}@Overridepublic void onActivityCreated(Bundle savedInstanceState){super.onActivityCreated(savedInstanceState);// load and show dataif(mViewState==null || mViewState==ViewState.OFFLINE){loadData();}else if(mViewState==ViewState.CONTENT){if(mProduct!=null) renderView();showContent();}else if(mViewState==ViewState.PROGRESS){showProgress();}else if(mViewState==ViewState.EMPTY){showEmpty();}}@Overridepublic void onStart(){super.onStart();}@Overridepublic void onResume(){super.onResume();}@Overridepublic void onPause(){super.onPause();}@Overridepublic void onStop(){super.onStop();}@Overridepublic void onDestroyView(){super.onDestroyView();mRootView = null;}@Overridepublic void onDestroy(){super.onDestroy();// cancel async tasksif(mLoadDataTask!=null) mLoadDataTask.cancel(true);}@Overridepublic void onDetach(){super.onDetach();}@Overridepublic void onSaveInstanceState(Bundle outState){// save current instance statesuper.onSaveInstanceState(outState);setUserVisibleHint(true);}@Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater){// action bar menusuper.onCreateOptionsMenu(menu, inflater);// TODO}@Overridepublic boolean onOptionsItemSelected(MenuItem item){// action bar menu behaviourreturn super.onOptionsItemSelected(item);// TODO}@Overridepublic void onLoadData(){runTaskCallback(new Runnable(){public void run(){if(mRootView==null) return; // view was destroyed// get datamProduct = new ProductEntity();mProduct.setName("Test Product");// hide progress and render viewif(mProduct!=null){renderView();showContent();}else showEmpty();}});}private void loadData(){if(NetworkManager.isOnline(getActivity())){// show progressshowProgress();// run async taskmLoadDataTask = new LoadDataTask(this);executeTask(mLoadDataTask);}else{showOffline();}}private void showContent(){// show content containerViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);containerContent.setVisibility(View.VISIBLE);containerProgress.setVisibility(View.GONE);containerOffline.setVisibility(View.GONE);containerEmpty.setVisibility(View.GONE);mViewState = ViewState.CONTENT;}private void showProgress(){// show progress containerViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);containerContent.setVisibility(View.GONE);containerProgress.setVisibility(View.VISIBLE);containerOffline.setVisibility(View.GONE);containerEmpty.setVisibility(View.GONE);mViewState = ViewState.PROGRESS;}private void showOffline(){// show offline containerViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);containerContent.setVisibility(View.GONE);containerProgress.setVisibility(View.GONE);containerOffline.setVisibility(View.VISIBLE);containerEmpty.setVisibility(View.GONE);mViewState = ViewState.OFFLINE;}private void showEmpty(){// show empty containerViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);containerContent.setVisibility(View.GONE);containerProgress.setVisibility(View.GONE);containerOffline.setVisibility(View.GONE);containerEmpty.setVisibility(View.VISIBLE);mViewState = ViewState.EMPTY;}private void renderView(){// referenceTextView nameTextView = (TextView) mRootView.findViewById(R.id.fragment_simple_name);// contentnameTextView.setText(mProduct.getName());}}
查文档,决定比查博客高效、准确、可靠。
long vs double ???
百度地图,经纬度到地址的转换(坑爹的 api,竟然没有查询功能,我在 IDE 里输了,看到包名,再去找,真他妈坑)
还有计算距离
final GeoCoder geoCoder = GeoCoder.newInstance();ReverseGeoCodeOption option = new ReverseGeoCodeOption();option.location(new LatLng(cleaner.latitude, cleaner.longitude));geoCoder.reverseGeoCode(option);geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {locationTextView.setText(reverseGeoCodeResult.getAddress());geoCoder.destroy();}@Overridepublic void onGetGeoCodeResult(GeoCodeResult arg0) {}});
待解决的问题
- start activitiy out activity??? 1
- 距离的显示,米还是公里,直接用公里,精确度是100米...还是分米和公里两种吧,0.1公里,不好,格式化小数里面的学问也不小啊,new DecimalFormat("#.##").format(1.199); //"1.2"``String.format("%.2f", value) ;3~~~~~
- 头像的展示 4
- 详情页的可切换 2 ~
- 详情页位置的显示还是不够正常;难道是顺序的问题,???~
还把 pk 写错导致经纬度一直没能更新到服务器上!!!
搞 initComm 500问题,是公司业务的问题
修改记录
将 Volley.jar 拷贝到 libs目录下
将 selector_cleaner_detail_text_color.xml 拷贝到 res/color 文件夹下
将 CleanerViewHolder 拷贝到com.diandian.housekeeping.adapter 包内
覆盖 activity_cleaner_detail.xml文件
覆盖 CleanerDetailActivity.java 文件
覆盖 Util.java 文件
覆盖 ListFragment.java 文件
覆盖 ContactActivity.java 文件
覆盖 Cleaner.java
覆盖 OrmLiteDBHelper.java
修改 InitCommunication.java
覆盖 list_item_cleaner.xml
覆盖 map_view_overlay.xml