Forráskód Böngészése

事件详情--资源详情

zhanghongrui 2 hete
szülő
commit
b2811df425

+ 2 - 2
OneBottomNavigationBar/src/main/java/cn/onestravel/one/navigation/androidx/OneBottomNavigationBarX.kt

@@ -573,7 +573,7 @@ class OneBottomNavigationBar : View {
                 when (event) {
                     XmlPullParser.START_DOCUMENT -> {
                         if (BuildConfig.DEBUG) {
-                            Log.e(TAG, "xml解析开始")
+                            //Log.e(TAG, "xml解析开始")
                         }
                     }
                     XmlPullParser.START_TAG ->
@@ -656,7 +656,7 @@ class OneBottomNavigationBar : View {
                     }
                     XmlPullParser.END_TAG -> {
                         if (BuildConfig.DEBUG) {
-                            Log.e(TAG, "xml解析结束")
+                           // Log.e(TAG, "xml解析结束")
                         }
                     }
                     else -> {

+ 0 - 2
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/EventDetailsActivity.java

@@ -105,9 +105,7 @@ public class EventDetailsActivity extends BaseActivity {
     }
 
 
-    public void getMessage(){
 
-    }
     @Override
     public void initView() {
         super.initView();

+ 74 - 1
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/ResourceDetailsActivity.java

@@ -1,10 +1,83 @@
 package com.sjkj.appthreefloor_tsgz.activity;
 
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.core.content.ContextCompat;
+import androidx.lifecycle.ViewModelProvider;
+
+import com.gyf.immersionbar.ImmersionBar;
+import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.activity.viewModel.ResureDetailsViewModel;
+import com.sjkj.appthreefloor_tsgz.app.App;
+import com.sjkj.appthreefloor_tsgz.bean.ResureDetailsBean;
+import com.sjkj.appthreefloor_tsgz.databinding.ActivityResureDetailsBinding;
+import com.sjkj.appthreefloor_tsgz.net.ResureDetailsRequest;
+import com.sjkj.base_lib.entity.Params;
+import com.sjkj.base_lib.net.domain.interactor.ProcessErrorSubscriber;
 import com.sjkj.base_lib.view.BaseActivity;
 
 public class ResourceDetailsActivity extends BaseActivity {
+    ActivityResureDetailsBinding binding;
+    ResureDetailsViewModel viewModel;
+    private ResureDetailsRequest resureDetailsRequest = new ResureDetailsRequest(App.getInstance());
+
     @Override
     protected int initLayout() {
-        return 0;
+        return R.layout.activity_resure_details;
+    }
+
+    @Override
+    public void initBinding() {
+        binding = (ActivityResureDetailsBinding) getViewDataBinding();
+        viewModel = new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(ResureDetailsViewModel.class);
+        binding.setViewModel(viewModel);
+        binding.setLifecycleOwner(this);
+    }
+
+    @Override
+    public void initView() {
+        super.initView();
+        getTitleView().setText(getIntent().getStringExtra("tagValeText"));
+        ImmersionBar.with(ResourceDetailsActivity.this)
+                .fitsSystemWindows(true)  //使用该属性,必须指定状态栏颜色
+                .statusBarDarkFont(true, 0.2f)
+                .statusBarColor(R.color.white)
+                .init();
+        getTitleView().setTextColor(getResources().getColor(R.color.black));
+        int drawableLeft = R.drawable.icon_back; // 替换为你的drawable资源ID
+        Drawable drawable = ContextCompat.getDrawable(ResourceDetailsActivity.this, drawableLeft);
+        if (drawable != null) {
+            getBackView().setCompoundDrawablesRelativeWithIntrinsicBounds(drawable, null, null, null); // 使用Relative版本以支持RTL布局方向
+        }
+        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.color.white));
+
+
+    }
+
+    @Override
+    public void loadData() {
+        super.loadData();
+        Params params = new Params();
+        params.put("tag", getIntent().getStringExtra("tag"));
+        params.put("id", getIntent().getStringExtra("id"));
+        resureDetailsRequest.setParams(params);
+        resureDetailsRequest.execute(new ProcessErrorSubscriber<ResureDetailsBean>() {
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+            }
+
+            @Override
+            public void onNext(ResureDetailsBean bean) {
+                super.onNext(bean);
+                if (null != bean.getDetail().getUrl() && !TextUtils.isEmpty(bean.getDetail().getUrl())) {
+                    Log.d("zhr111", "ddd");
+                } else {
+                    Log.d("zhr111", "cccc");
+                }
+            }
+        });
     }
 }

+ 25 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/activity/viewModel/ResureDetailsViewModel.java

@@ -0,0 +1,25 @@
+package com.sjkj.appthreefloor_tsgz.activity.viewModel;
+
+import androidx.databinding.ObservableArrayList;
+import androidx.databinding.ObservableField;
+import androidx.databinding.ObservableInt;
+
+import com.sjkj.appthreefloor_tsgz.bean.EventBean;
+import com.sjkj.appthreefloor_tsgz.map.MapMarkBean;
+import com.sjkj.base_lib.view.SingleLiveData;
+import com.sjkj.base_lib.vm.BaseViewModel;
+
+import java.util.List;
+
+public class ResureDetailsViewModel extends BaseViewModel {
+
+    public ObservableField<String> tag = new ObservableField<>("");
+    public ObservableField<String> tagText = new ObservableField<>("");
+    public ObservableField<String> id = new ObservableField<>("");
+
+    public SingleLiveData<EventBean> singleLiveData = new SingleLiveData<>();
+
+    public void getData() {
+        singleLiveData.setValue(null);
+    }
+}

+ 3 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/RecycleviewLeftAdapter.java

@@ -24,9 +24,9 @@ public class RecycleviewLeftAdapter extends RecyclerView.Adapter<RecycleviewLeft
     public void refreshList(List<ResourcesListBean> list) {
         this.mDatas = list;
         notifyDataSetChanged();
-        if (this.mDatas == null || this.mDatas.size() <= 0) {
-            ToastUtils.show("暂无更多数据");
-        }
+//        if (this.mDatas == null || this.mDatas.size() <= 0) {
+//            ToastUtils.show("暂无更多数据");
+//        }
     }
     private int selectedPosition = 0;
 

+ 5 - 2
app/src/main/java/com/sjkj/appthreefloor_tsgz/adapter/RecycleviewRightAdapter.java

@@ -101,7 +101,7 @@ public class RecycleviewRightAdapter extends RecyclerView.Adapter<RecyclerView.V
         } else {
             MyViewHolder2 myViewHolder2 = ((MyViewHolder2) holder);
             myViewHolder2.txt_tit.setText(mDatas.get(position).getName());
-            myViewHolder2.tv_distance.setText("距 离:" + mDatas.get(position).getDistance() + "km");
+            myViewHolder2.tv_distance.setText("距 离:" + convertMetersToKilometers(mDatas.get(position).getDistance()) + "km");
             myViewHolder2.itemView.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
@@ -112,7 +112,10 @@ public class RecycleviewRightAdapter extends RecyclerView.Adapter<RecyclerView.V
         }
 
     }
-
+    public static String convertMetersToKilometers(double meters) {
+        double kilometers = meters / 1000;
+        return String.format("%.2f", kilometers); // 保留一位小数
+    }
 
     @Override
     public int getItemCount() {

+ 3 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/CommonDateBean.java

@@ -28,15 +28,15 @@ public class CommonDateBean implements Serializable {
         this.latitude = latitude;
     }
 
-    public String getDistance() {
+    public Double getDistance() {
         return distance;
     }
 
-    public void setDistance(String distance) {
+    public void setDistance(Double distance) {
         this.distance = distance;
     }
 
-    private String distance;
+    private Double distance;
 
     public boolean isSelected() {
         return isSelected;

+ 144 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/bean/ResureDetailsBean.java

@@ -0,0 +1,144 @@
+/**
+ * Copyright 2025 json.cn
+ */
+package com.sjkj.appthreefloor_tsgz.bean;
+
+
+public class ResureDetailsBean {
+
+    private Detail detail;
+
+
+    public void setDetail(Detail detail) {
+        this.detail = detail;
+    }
+
+    public Detail getDetail() {
+        return detail;
+    }
+
+
+    public class Detail {
+
+        private String deptName;
+        private String createBy;
+        private String createTime;
+        private String latitude;
+        private String deptId;
+        private String name;
+        private String deptNameAdm;
+        private String id;
+        private String deptIdAdm;
+        private String type;
+        private String url;
+
+        public String getUrl() {
+            return url;
+        }
+
+        public void setUrl(String url) {
+            this.url = url;
+        }
+
+        private String createName;
+        private String longitude;
+
+        public void setDeptName(String deptName) {
+            this.deptName = deptName;
+        }
+
+        public String getDeptName() {
+            return deptName;
+        }
+
+        public void setCreateBy(String createBy) {
+            this.createBy = createBy;
+        }
+
+        public String getCreateBy() {
+            return createBy;
+        }
+
+        public void setCreateTime(String createTime) {
+            this.createTime = createTime;
+        }
+
+        public String getCreateTime() {
+            return createTime;
+        }
+
+        public void setLatitude(String latitude) {
+            this.latitude = latitude;
+        }
+
+        public String getLatitude() {
+            return latitude;
+        }
+
+        public void setDeptId(String deptId) {
+            this.deptId = deptId;
+        }
+
+        public String getDeptId() {
+            return deptId;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setDeptNameAdm(String deptNameAdm) {
+            this.deptNameAdm = deptNameAdm;
+        }
+
+        public String getDeptNameAdm() {
+            return deptNameAdm;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        public String getId() {
+            return id;
+        }
+
+        public void setDeptIdAdm(String deptIdAdm) {
+            this.deptIdAdm = deptIdAdm;
+        }
+
+        public String getDeptIdAdm() {
+            return deptIdAdm;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public void setCreateName(String createName) {
+            this.createName = createName;
+        }
+
+        public String getCreateName() {
+            return createName;
+        }
+
+        public void setLongitude(String longitude) {
+            this.longitude = longitude;
+        }
+
+        public String getLongitude() {
+            return longitude;
+        }
+
+    }
+
+}

+ 24 - 3
app/src/main/java/com/sjkj/appthreefloor_tsgz/fragment/EventNearByFragment.java

@@ -1,5 +1,6 @@
 package com.sjkj.appthreefloor_tsgz.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.util.Log;
@@ -22,6 +23,7 @@ import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;
 import com.sjkj.appthreefloor_tsgz.R;
+import com.sjkj.appthreefloor_tsgz.activity.ResourceDetailsActivity;
 import com.sjkj.appthreefloor_tsgz.adapter.RecycleviewLeftAdapter;
 import com.sjkj.appthreefloor_tsgz.adapter.RecycleviewRightAdapter;
 import com.sjkj.appthreefloor_tsgz.app.App;
@@ -39,6 +41,7 @@ import com.sjkj.base_lib.utils.LocationUtils;
 import com.sjkj.base_lib.utils.MapUtils;
 import com.sjkj.base_lib.utils.ToastUtils;
 import com.sjkj.base_lib.view.BaseFragment;
+import com.sjkj.base_lib.weight.LoadingDialog;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -49,13 +52,17 @@ public class EventNearByFragment extends BaseFragment {
 
     private RecycleviewLeftAdapter leftAdapter;
     private RecycleviewRightAdapter rightAdapter;
+    //左侧资源名称列表+范围选择
     private List<ResourcesListBean> resourceSelectTextList = new ArrayList<>();
+    //右侧 资源列表
     private List<CommonDateBean> resourceSelectList = new ArrayList<>();
     ResourcesListBean resourcesListBean;
     CommonDateBean commonDateBean;
+    //写死的公里数范围
     private List<String> distanceList = new ArrayList<>();
     private EventDetailsResourcesListRequest ResourcesListRequest = new EventDetailsResourcesListRequest(App.getInstance());
     private EventResourcesListRequest eventResourcesListRequest = new EventResourcesListRequest(App.getInstance());
+    //右侧公里数选择列表
     List<CommonDateBean> DistancelistChoose = new ArrayList<>();
     private Handler handler = new Handler();
     private String tagVale = "";
@@ -94,7 +101,8 @@ public class EventNearByFragment extends BaseFragment {
     }
 
     private void LoadListData(String eventType, Double lat, Double log) {
-
+        resourceSelectTextList.clear();
+        showLoadingDialog();
         Params params = new Params();
         params.put("typeId", eventType);
         ResourcesListRequest.setParams(params);
@@ -102,11 +110,14 @@ public class EventNearByFragment extends BaseFragment {
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
+                hideLoadingDialog(LoadingDialog.LOADING_FAILED);
+                ToastUtils.show(e.getMessage());
             }
 
             @Override
             public void onNext(List<ResourcesListBean> list) {
                 super.onNext(list);
+                hideLoadingDialog(LoadingDialog.LOADING_SUCCESS);
                 if (list != null && list.size() > 0) {
                     //多加一条
                     ResourcesListBean bean = new ResourcesListBean();
@@ -176,6 +187,7 @@ public class EventNearByFragment extends BaseFragment {
     @Override
     public void initView() {
         requestPermissionsLocation();
+        distanceList.clear();
         distanceList.add("5");
         distanceList.add("10");
         distanceList.add("15");
@@ -216,7 +228,11 @@ public class EventNearByFragment extends BaseFragment {
                 if (type == rightAdapter.TYPE_ITEM_ONE) {
                     rightAdapter.setCheckedPosition(position);
                 } else {
-                    Log.d("zhr1111", bean.getName() + "===" + bean.getId() + tagVale + tagValeText);
+                    Intent intent = new Intent(getActivity(), ResourceDetailsActivity.class);
+                    intent.putExtra("tag", tagVale);
+                    intent.putExtra("tagValeText", tagValeText);
+                    intent.putExtra("id", bean.getId());
+                    startActivity(intent);
                 }
 
             }
@@ -259,10 +275,12 @@ public class EventNearByFragment extends BaseFragment {
     }
 
     private void LoadRightList(boolean isFirst, String tag, String tagText, Double latitude, Double longitude, String distance) {
+        showLoadingDialog();
         tagVale = tag;
         tagValeText = tagText;
         if (isFirst) {
             DistancelistChoose.clear();
+            Log.d("zhr1121", distanceList.size() + "===");
             for (int i = 0; i < distanceList.size(); i++) {
                 commonDateBean = new CommonDateBean();
                 commonDateBean.setType(1);
@@ -283,11 +301,14 @@ public class EventNearByFragment extends BaseFragment {
             @Override
             public void onError(Throwable e) {
                 super.onError(e);
+                hideLoadingDialog(LoadingDialog.LOADING_FAILED);
+                ToastUtils.show(e.getMessage());
             }
 
             @Override
             public void onNext(List<CommonDateBean> list) {
                 super.onNext(list);
+                hideLoadingDialog(LoadingDialog.LOADING_SUCCESS);
                 if (list != null && list.size() > 0) {
 
                     for (int i = 0; i < list.size(); i++) {
@@ -344,7 +365,7 @@ public class EventNearByFragment extends BaseFragment {
                         rightAdapter.refush(new ArrayList<CommonDateBean>());
                     }
 
-                    ToastUtils.show("暂无数据");
+                    //ToastUtils.show("暂无数据");
                 }
             }
         });

+ 51 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/ResureDetailsRequest.java

@@ -0,0 +1,51 @@
+package com.sjkj.appthreefloor_tsgz.net;
+
+import android.content.Context;
+
+import com.sjkj.appthreefloor_tsgz.bean.ResureDetailsBean;
+import com.sjkj.base_lib.entity.Params;
+import com.sjkj.base_lib.entity.ResponseBean;
+import com.sjkj.base_lib.net.RetrofitFactory;
+import com.sjkj.base_lib.net.data.exception.BusinessException;
+import com.sjkj.base_lib.net.domain.interactor.UseCase;
+import com.sjkj.base_lib.utils.AppTools;
+
+import rx.Observable;
+import rx.functions.Func1;
+
+/**
+ * 资源详情
+ */
+public class ResureDetailsRequest extends UseCase {
+    private Context context;
+    private RetrofitService service;
+
+    private Params params;
+
+    public Params getParams() {
+        return params;
+    }
+
+    public void setParams(Params params) {
+        this.params = params;
+    }
+
+    public ResureDetailsRequest(Context context) {
+        this.context = context;
+        service = RetrofitFactory.getRetrofit(AppTools.getBaseUrl()).create(RetrofitService.class);
+    }
+
+    @Override
+    protected Observable buildUseCaseObservable() {
+        return service.resureDetails(params).flatMap(new Func1<ResponseBean<ResureDetailsBean>, Observable<ResureDetailsBean>>() {
+            @Override
+            public Observable<ResureDetailsBean> call(ResponseBean<ResureDetailsBean> responseBean) {
+                if (!ResponseBean.CODE_SUCCESS.
+                        equals(responseBean.getCode())) {
+                    return Observable.error(new BusinessException(responseBean.getMsg()));
+                }
+                return Observable.just(responseBean.getData());
+            }
+        });
+    }
+}

+ 5 - 0
app/src/main/java/com/sjkj/appthreefloor_tsgz/net/RetrofitService.java

@@ -12,6 +12,7 @@ import com.sjkj.appthreefloor_tsgz.bean.LogInRsaBean;
 import com.sjkj.appthreefloor_tsgz.bean.NoticeListBean;
 import com.sjkj.appthreefloor_tsgz.bean.ResourceVisualizationBean;
 import com.sjkj.appthreefloor_tsgz.bean.ResourcesListBean;
+import com.sjkj.appthreefloor_tsgz.bean.ResureDetailsBean;
 import com.sjkj.appthreefloor_tsgz.bean.VersionBean;
 import com.sjkj.base_lib.camera.dh.bean.CameraBean;
 import com.sjkj.base_lib.entity.Params;
@@ -49,6 +50,10 @@ public interface RetrofitService {
     @GET("event/getEventByEventId")
     Observable<ResponseBean<EventDetailsBean>> eventDetails(@QueryMap Params params);
 
+    //资源详情
+    @GET("data/resourceDetail")
+    Observable<ResponseBean<ResureDetailsBean>> resureDetails(@QueryMap Params params);
+
     //首页-通知公告
     @GET("app/noticeList")
     Observable<ResponseBean<List<NoticeListBean>>> homeNoticeList(@QueryMap Params params);

+ 10 - 1
app/src/main/java/com/sjkj/appthreefloor_tsgz/utils/GaoDeBottomSheetBehavior.java

@@ -679,9 +679,14 @@ public class GaoDeBottomSheetBehavior<V extends View> extends Behavior<V> {
 
                 for (int count = group.getChildCount(); i < count; ++i) {
                     View scrollingChild = this.findScrollingChild(group.getChildAt(i));
-                    if (scrollingChild != null) {
+//                    if (scrollingChild != null) {
+//                        return scrollingChild;
+//                    }
+                    if (scrollingChild != null && scrollingChild.isShown() && canScrollVertically(scrollingChild)) {
                         return scrollingChild;
                     }
+
+
                 }
             }
 
@@ -689,6 +694,10 @@ public class GaoDeBottomSheetBehavior<V extends View> extends Behavior<V> {
         }
     }
 
+    private boolean canScrollVertically(View scrollingChild) {
+        return scrollingChild.canScrollVertically(-1) || scrollingChild.canScrollVertically(1);
+    }
+
     private float getYVelocity() {
         if (this.velocityTracker == null) {
             return 0.0F;

+ 32 - 0
app/src/main/res/layout/activity_resure_details.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <data>
+
+        <variable
+            name="viewModel"
+            type="com.sjkj.appthreefloor_tsgz.activity.viewModel.ResureDetailsViewModel" />
+    </data>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <androidx.core.widget.NestedScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+
+        </LinearLayout>
+        </androidx.core.widget.NestedScrollView>
+    </LinearLayout>
+
+</layout>

+ 5 - 2
app/src/main/res/layout/fragment_event_nearby.xml

@@ -40,6 +40,7 @@
             android:id="@+id/bottom_sheet"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
+            android:fillViewport="true"
             android:orientation="vertical"
 
             app:behavior_hideable="true"
@@ -124,14 +125,16 @@
                         android:isScrollContainer="false"
                         android:tag="ScrollController" />
 
-                    <androidx.recyclerview.widget.RecyclerView
+                    <com.sjkj.appthreefloor_tsgz.weight.CustomRecycleView
                         android:id="@+id/recyclerView_right"
                         android:layout_width="0dp"
                         android:layout_height="match_parent"
                         android:layout_marginLeft="5dp"
                         android:layout_weight="2.8"
                         android:background="@color/white"
-                        android:scrollbars="vertical" />
+                        android:isScrollContainer="false"
+                        android:tag="ScrollController"
+                        />
                 </LinearLayout>
 
             </LinearLayout>

+ 2 - 2
base-lib/src/main/java/com/sjkj/base_lib/utils/AppTools.java

@@ -478,8 +478,8 @@ public class AppTools {
     }
 
     public static String getBaseUrl() {
-       return mmkv.decodeString("baseUrl", "http://192.168.4.82:8080/api/");
-        //return mmkv.decodeString("baseUrl", "http://192.168.4.16:8080/");
+      // return mmkv.decodeString("baseUrl", "http://192.168.4.82:8080/api/");
+        return mmkv.decodeString("baseUrl", "http://192.168.4.16:8080/api/");
     }
 
 //    public static final String GATEWAY_URL = "sooka-mobile";