From 3a161aeef6dfe08aa80fca6fb2c1650ebdd31d59 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 01 二月 2024 15:29:19 +0800
Subject: [PATCH] 天气相关

---
 app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java |  108 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 107 insertions(+), 1 deletions(-)

diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java
index c1d0285..9ebd68f 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java
@@ -1,15 +1,121 @@
 package com.dayu.pipirrapp.fragment;
 
+import android.os.Bundle;
+import android.os.Looper;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.Observer;
+
+import com.dayu.pipirrapp.bean.LatLonBean;
+import com.dayu.pipirrapp.bean.WeatherResponse;
+import com.dayu.pipirrapp.databinding.FragmentMainBinding;
+import com.dayu.pipirrapp.net.ApiManager;
+import com.dayu.pipirrapp.utils.ImageUtils;
+import com.dayu.pipirrapp.utils.MyJsonParser;
+import com.dayu.pipirrapp.utils.SharedPreferencesHelper;
+import com.jeremyliao.liveeventbus.LiveEventBus;
+import com.tencent.bugly.crashreport.CrashReport;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
 /**
  * author: zuo
  * Date: 2023/12/20
  * Time: 10:12
  * 澶囨敞锛氶椤�
  */
-public class MainFragment extends BaseFragment{
+public class MainFragment extends BaseFragment {
+
+    FragmentMainBinding binding;
+    WeatherResponse weatherResponse;
+    //鏀跺埌瀹氫綅骞挎挱鍚庤幏鍙栧ぉ姘斾俊鎭�
+    Observer<LatLonBean> myObserver = new Observer<LatLonBean>() {
+        @Override
+        public void onChanged(LatLonBean latLonBean) {
+
+            String jsonStr = SharedPreferencesHelper.getInstance(MainFragment.this.getActivity()).get("WeatherResponse", "");
+            weatherResponse = MyJsonParser.getBeanFromJson(jsonStr, WeatherResponse.class);
+            if (weatherResponse == null) {
+                weatherResponse = new WeatherResponse();
+            }
+            // 鑾峰彇褰撳墠鏃堕棿
+            Calendar calendar = Calendar.getInstance();
+            // 鑾峰彇褰撳墠骞存湀鏃�
+            int year = calendar.get(Calendar.YEAR);
+            int month = calendar.get(Calendar.MONTH) + 1; // 娉ㄦ剰鏈堜唤鏄粠0寮�濮嬭鏁扮殑锛屾墍浠ヨ鍔�1
+            int day = calendar.get(Calendar.DAY_OF_MONTH);
+            String date = year + "骞�" + month + "鏈�" + day + "鏃�";
+            if (weatherResponse == null || !date.equals(weatherResponse.getDate())) {
+                weatherResponse.setDate(date);
+                ApiManager.getInstance().requestWeather(latLonBean.getLatitude() + ":" + latLonBean.getLongitude(), new Callback<WeatherResponse>() {
+                    @Override
+                    public void onResponse(Call<WeatherResponse> call, Response<WeatherResponse> response) {
+
+                        if (response.isSuccessful()) {
+                            weatherResponse.setResults(response.body().getResults());
+                            SharedPreferencesHelper.getInstance(MainFragment.this.getActivity()).put("WeatherResponse", weatherResponse);
+                            setWeatherData(weatherResponse);
+                        }
+                    }
+
+                    @Override
+                    public void onFailure(Call<WeatherResponse> call, Throwable t) {
+
+                    }
+                });
+            } else {
+                setWeatherData(weatherResponse);
+            }
+            LiveEventBus.get("location", LatLonBean.class).removeObserver(myObserver);
+        }
+    };
 
 
+    /**
+     * 璁剧疆澶╂皵鐩稿叧淇℃伅
+     *
+     * @param data
+     */
+    private void setWeatherData(WeatherResponse data) {
+        try {
+            if (data.getResults() != null) {
+                binding.cityName.setText(data.getResults()[0].getLocation().getName());
+                binding.time.setText(data.getDate());
+                int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day());
+                if (weatherImg != 0) {
+                    binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg));
+                }
+                binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day());
+                binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            CrashReport.postCatchedException(e);
+        }
+    }
 
 
+    @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        binding = FragmentMainBinding.inflate(inflater, container, false);
+
+
+        //鑾峰彇鍒扮粡绾害鍚庤幏鍙栧ぉ姘斾俊鎭�
+        LiveEventBus
+                .get("location", LatLonBean.class)
+                .observeForever(myObserver);
+
+        return binding.getRoot();
+    }
+
 
 }

--
Gitblit v1.8.0