ParkDetailComponent.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package com.fujica.abk.component;
  2. import com.fujica.abk.ResourceTable;
  3. import com.fujica.abk.model.response.ParkNearRes;
  4. import com.fujica.abk.utils.Log;
  5. import ohos.agp.components.*;
  6. import ohos.app.Context;
  7. /**
  8. * 停车场详情组件
  9. */
  10. public class ParkDetailComponent extends DirectionalLayout {
  11. private Component rootLayout;
  12. private ParkNearRes parkData;
  13. /**
  14. * 构造函数
  15. */
  16. public ParkDetailComponent(Context context) {
  17. super(context);
  18. initComponent(context);
  19. }
  20. /**
  21. * 初始化组件
  22. */
  23. private void initComponent(Context context) {
  24. // 设置布局属性
  25. setWidth(ComponentContainer.LayoutConfig.MATCH_PARENT);
  26. setHeight(ComponentContainer.LayoutConfig.MATCH_PARENT);
  27. setOrientation(VERTICAL);
  28. // 加载布局文件
  29. rootLayout = LayoutScatter.getInstance(context)
  30. .parse(ResourceTable.Layout_layout_park_detail, null, false);
  31. addComponent(rootLayout);
  32. }
  33. /**
  34. * 设置停车场数据并更新UI
  35. */
  36. public void setParkData(ParkNearRes park) {
  37. this.parkData = park;
  38. bindData();
  39. }
  40. /**
  41. * 绑定数据到 UI
  42. */
  43. private void bindData() {
  44. if (parkData == null || rootLayout == null) {
  45. return;
  46. }
  47. try {
  48. // 设置停车场名称
  49. Text nameText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_park_name);
  50. if (nameText != null && parkData.getParkName() != null) {
  51. nameText.setText(parkData.getParkName());
  52. }
  53. // 设置地址
  54. Text addressText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_address);
  55. if (addressText != null) {
  56. addressText.setText(parkData.getAddress() != null ? parkData.getAddress() : "--");
  57. }
  58. // 设置距离
  59. Text distanceText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_distance);
  60. if (distanceText != null) {
  61. String distanceStr = parkData.getDistance() != null ?
  62. String.format("%.1fkm", parkData.getDistance() / 1000.0) : "0km";
  63. distanceText.setText(distanceStr);
  64. }
  65. // 设置总车位
  66. Text totalPlaceText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_total_place);
  67. if (totalPlaceText != null && parkData.getTotalPlace() != null) {
  68. totalPlaceText.setText(String.valueOf(parkData.getTotalPlace()));
  69. }
  70. // 设置剩余车位
  71. Text residuePlaceText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_residue_place);
  72. if (residuePlaceText != null && parkData.getResiduePlace() != null) {
  73. residuePlaceText.setText(String.valueOf(parkData.getResiduePlace()));
  74. }
  75. // 设置免费时长
  76. Text freeTimeText = (Text) rootLayout.findComponentById(ResourceTable.Id_detail_free_time);
  77. if (freeTimeText != null) {
  78. freeTimeText.setText(parkData.getFreeTime() != null ? parkData.getFreeTime() + "分" : "--");
  79. }
  80. } catch (Exception e) {
  81. Log.error("绑定停车场详情数据失败: " + e.getMessage());
  82. e.printStackTrace();
  83. }
  84. }
  85. }