[关闭]
@myron-lee 2015-01-16T12:05:22.000000Z 字数 6142 阅读 1330

1月16日

每日记录


每个年轻的内心都是复杂纷乱的。有些话不能说出口。

1.继续完善爱家政客户版

传递与填充数据
- 真实距离不好计算
不在 onCreateView做初始化工作,放到 onActivityCreated 中。在 onCreateView 中只保存一个 rootView 的引用,注意要再 onDestoryView 中把它设为 null。

  1. public class SimpleFragment extends TaskFragment implements OnLoadDataListener
  2. {
  3. private ViewState mViewState = null;
  4. private View mRootView;
  5. private LoadDataTask mLoadDataTask;
  6. private ProductEntity mProduct;
  7. @Override
  8. public void onAttach(Activity activity)
  9. {
  10. super.onAttach(activity);
  11. }
  12. @Override
  13. public void onCreate(Bundle savedInstanceState)
  14. {
  15. super.onCreate(savedInstanceState);
  16. setHasOptionsMenu(true);
  17. setRetainInstance(true);
  18. }
  19. @Override
  20. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  21. {
  22. mRootView = inflater.inflate(R.layout.fragment_simple, container, false);
  23. return mRootView;
  24. }
  25. @Override
  26. public void onActivityCreated(Bundle savedInstanceState)
  27. {
  28. super.onActivityCreated(savedInstanceState);
  29. // load and show data
  30. if(mViewState==null || mViewState==ViewState.OFFLINE)
  31. {
  32. loadData();
  33. }
  34. else if(mViewState==ViewState.CONTENT)
  35. {
  36. if(mProduct!=null) renderView();
  37. showContent();
  38. }
  39. else if(mViewState==ViewState.PROGRESS)
  40. {
  41. showProgress();
  42. }
  43. else if(mViewState==ViewState.EMPTY)
  44. {
  45. showEmpty();
  46. }
  47. }
  48. @Override
  49. public void onStart()
  50. {
  51. super.onStart();
  52. }
  53. @Override
  54. public void onResume()
  55. {
  56. super.onResume();
  57. }
  58. @Override
  59. public void onPause()
  60. {
  61. super.onPause();
  62. }
  63. @Override
  64. public void onStop()
  65. {
  66. super.onStop();
  67. }
  68. @Override
  69. public void onDestroyView()
  70. {
  71. super.onDestroyView();
  72. mRootView = null;
  73. }
  74. @Override
  75. public void onDestroy()
  76. {
  77. super.onDestroy();
  78. // cancel async tasks
  79. if(mLoadDataTask!=null) mLoadDataTask.cancel(true);
  80. }
  81. @Override
  82. public void onDetach()
  83. {
  84. super.onDetach();
  85. }
  86. @Override
  87. public void onSaveInstanceState(Bundle outState)
  88. {
  89. // save current instance state
  90. super.onSaveInstanceState(outState);
  91. setUserVisibleHint(true);
  92. }
  93. @Override
  94. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
  95. {
  96. // action bar menu
  97. super.onCreateOptionsMenu(menu, inflater);
  98. // TODO
  99. }
  100. @Override
  101. public boolean onOptionsItemSelected(MenuItem item)
  102. {
  103. // action bar menu behaviour
  104. return super.onOptionsItemSelected(item);
  105. // TODO
  106. }
  107. @Override
  108. public void onLoadData()
  109. {
  110. runTaskCallback(new Runnable()
  111. {
  112. public void run()
  113. {
  114. if(mRootView==null) return; // view was destroyed
  115. // get data
  116. mProduct = new ProductEntity();
  117. mProduct.setName("Test Product");
  118. // hide progress and render view
  119. if(mProduct!=null)
  120. {
  121. renderView();
  122. showContent();
  123. }
  124. else showEmpty();
  125. }
  126. });
  127. }
  128. private void loadData()
  129. {
  130. if(NetworkManager.isOnline(getActivity()))
  131. {
  132. // show progress
  133. showProgress();
  134. // run async task
  135. mLoadDataTask = new LoadDataTask(this);
  136. executeTask(mLoadDataTask);
  137. }
  138. else
  139. {
  140. showOffline();
  141. }
  142. }
  143. private void showContent()
  144. {
  145. // show content container
  146. ViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);
  147. ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);
  148. ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);
  149. ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);
  150. containerContent.setVisibility(View.VISIBLE);
  151. containerProgress.setVisibility(View.GONE);
  152. containerOffline.setVisibility(View.GONE);
  153. containerEmpty.setVisibility(View.GONE);
  154. mViewState = ViewState.CONTENT;
  155. }
  156. private void showProgress()
  157. {
  158. // show progress container
  159. ViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);
  160. ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);
  161. ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);
  162. ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);
  163. containerContent.setVisibility(View.GONE);
  164. containerProgress.setVisibility(View.VISIBLE);
  165. containerOffline.setVisibility(View.GONE);
  166. containerEmpty.setVisibility(View.GONE);
  167. mViewState = ViewState.PROGRESS;
  168. }
  169. private void showOffline()
  170. {
  171. // show offline container
  172. ViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);
  173. ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);
  174. ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);
  175. ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);
  176. containerContent.setVisibility(View.GONE);
  177. containerProgress.setVisibility(View.GONE);
  178. containerOffline.setVisibility(View.VISIBLE);
  179. containerEmpty.setVisibility(View.GONE);
  180. mViewState = ViewState.OFFLINE;
  181. }
  182. private void showEmpty()
  183. {
  184. // show empty container
  185. ViewGroup containerContent = (ViewGroup) mRootView.findViewById(R.id.container_content);
  186. ViewGroup containerProgress = (ViewGroup) mRootView.findViewById(R.id.container_progress);
  187. ViewGroup containerOffline = (ViewGroup) mRootView.findViewById(R.id.container_offline);
  188. ViewGroup containerEmpty = (ViewGroup) mRootView.findViewById(R.id.container_empty);
  189. containerContent.setVisibility(View.GONE);
  190. containerProgress.setVisibility(View.GONE);
  191. containerOffline.setVisibility(View.GONE);
  192. containerEmpty.setVisibility(View.VISIBLE);
  193. mViewState = ViewState.EMPTY;
  194. }
  195. private void renderView()
  196. {
  197. // reference
  198. TextView nameTextView = (TextView) mRootView.findViewById(R.id.fragment_simple_name);
  199. // content
  200. nameTextView.setText(mProduct.getName());
  201. }
  202. }

查文档,决定比查博客高效、准确、可靠。
long vs double ???
百度地图,经纬度到地址的转换(坑爹的 api,竟然没有查询功能,我在 IDE 里输了,看到包名,再去找,真他妈坑)
还有计算距离

  1. final GeoCoder geoCoder = GeoCoder.newInstance();
  2. ReverseGeoCodeOption option = new ReverseGeoCodeOption();
  3. option.location(new LatLng(cleaner.latitude, cleaner.longitude));
  4. geoCoder.reverseGeoCode(option);
  5. geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
  6. @Override
  7. public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
  8. locationTextView.setText(reverseGeoCodeResult.getAddress());
  9. geoCoder.destroy();
  10. }
  11. @Override
  12. public void onGetGeoCodeResult(GeoCodeResult arg0) {
  13. }
  14. });

待解决的问题
- 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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注