From 6834b4502af1d4873737f989041be1360e201108 Mon Sep 17 00:00:00 2001
From: Administrator <123>
Date: Fri, 29 Oct 2021 09:46:38 +0000
Subject: [PATCH] 部分修改

---
 app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java    |   16 ++++
 app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java              |   17 +++-
 app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java    |   25 +-----
 app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java |    2 
 app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java   |   19 ++++
 app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java             |   24 ++++-
 app/src/main/res/layout/fragment_home.xml                                         |   93 ++++++++++++-----------
 7 files changed, 120 insertions(+), 76 deletions(-)

diff --git a/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java b/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java
index a0d8ef3..d0da00b 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java
@@ -1,40 +1,25 @@
 package com.duqing.missions.ui.main.dashboard;
 
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 
+import com.duqing.missions.MainActivity;
+import com.duqing.missions.base.BaseFragment;
 import com.duqing.missions.databinding.FragmentDashboardBinding;
 
-public class DashboardFragment extends Fragment {
+public class DashboardFragment extends BaseFragment<MainActivity,FragmentDashboardBinding> {
 
     private DashboardViewModel dashboardViewModel;
     private FragmentDashboardBinding binding;
 
-    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+    @Override
+    public void initViews() {
         dashboardViewModel = new ViewModelProvider(this).get(DashboardViewModel.class);
-
-        binding = FragmentDashboardBinding.inflate(inflater, container, false);
-        View root = binding.getRoot();
-
         dashboardViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
             @Override
             public void onChanged(@Nullable String s) {
             }
         });
-        return root;
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-        binding = null;
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java b/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java
new file mode 100644
index 0000000..a0f3ffe
--- /dev/null
+++ b/app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java
@@ -0,0 +1,19 @@
+package com.duqing.missions.ui.main.dashboard;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+public class DashboardViewModel extends ViewModel {
+
+    private MutableLiveData<String> mText;
+
+    public DashboardViewModel() {
+        mText = new MutableLiveData<>();
+        mText.setValue("This is dashboard fragment");
+    }
+
+    public LiveData<String> getText() {
+        return mText;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java b/app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java
index 665138e..d1fc918 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java
@@ -19,7 +19,8 @@
 import com.duqing.missions.MainActivity;
 import com.duqing.missions.base.BaseFragment;
 import com.duqing.missions.databinding.FragmentHomeBinding;
-import com.duqing.missions.ui.main.home.adapter.MissiontTopAdapter;
+import com.duqing.missions.ui.main.home.adapter.MissionAdapter;
+import com.duqing.missions.ui.main.home.adapter.MissionTopAdapter;
 import com.duqing.missions.ui.main.home.model.MissionDesc;
 import com.scwang.smart.refresh.footer.ClassicsFooter;
 import com.scwang.smart.refresh.header.ClassicsHeader;
@@ -62,22 +63,30 @@
                 homeViewModel.onRefresh();
             }
         });
-        final MissiontTopAdapter topAdapter = new MissiontTopAdapter();
+        final MissionTopAdapter topAdapter = new MissionTopAdapter();
         recyclerTop.setAdapter(topAdapter);
+        final MissionAdapter recommendAdapter = new MissionAdapter();
+        recyclerRecommend.setAdapter(recommendAdapter);
         homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer<String>() {
             @Override
             public void onChanged(@Nullable String s) {
                 textView.setText(s);
             }
         });
-        homeViewModel.getMissions().observe(getViewLifecycleOwner(), new Observer<List<MissionDesc>>() {
+        homeViewModel.getTopMissions().observe(getViewLifecycleOwner(), new Observer<List<MissionDesc>>() {
             @Override
             public void onChanged(List<MissionDesc> missionDescs) {
                 smartRefresh.finishRefresh();
-                smartRefresh.finishLoadMore();
                 topAdapter.setData(missionDescs);
             }
         });
+        homeViewModel.getRecommendMissions().observeForever(new Observer<List<MissionDesc>>() {
+            @Override
+            public void onChanged(List<MissionDesc> missionDescs) {
+                smartRefresh.finishLoadMore();
+                recommendAdapter.setData(missionDescs);
+            }
+        });
     }
 
     @Nullable
diff --git a/app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java b/app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java
index e76862b..be17225 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java
@@ -12,7 +12,8 @@
 public class HomeViewModel extends ViewModel {
 
     private MutableLiveData<String> mText;
-    private MutableLiveData<List<MissionDesc>> missions = new MutableLiveData<>();
+    private MutableLiveData<List<MissionDesc>> topMissions = new MutableLiveData<>();
+    private MutableLiveData<List<MissionDesc>> recommendMissions = new MutableLiveData<>();
 
     public HomeViewModel() {
         mText = new MutableLiveData<>();
@@ -23,25 +24,34 @@
         return mText;
     }
 
-    public MutableLiveData<List<MissionDesc>> getMissions() {
-        return missions;
+    public MutableLiveData<List<MissionDesc>> getTopMissions() {
+        return topMissions;
+    }
+
+    public MutableLiveData<List<MissionDesc>> getRecommendMissions() {
+        return recommendMissions;
     }
 
     public void onRefresh(){
-        List<MissionDesc> list = new ArrayList<>();
+        List<MissionDesc> list = topMissions.getValue() == null? new ArrayList<>() :topMissions.getValue();
+        list.clear();
         list.add(new MissionDesc());
         list.add(new MissionDesc());
         list.add(new MissionDesc());
         list.add(new MissionDesc());
-        missions.setValue(list);
+        topMissions.setValue(list);
+        List<MissionDesc> list2 = recommendMissions.getValue() == null? new ArrayList<>() :recommendMissions.getValue();
+        list2.clear();
+        list2.addAll(list);
+        recommendMissions.setValue(list2);
     }
 
     public void onLoadMore(){
-        List<MissionDesc> list = missions.getValue();
+        List<MissionDesc> list = recommendMissions.getValue();
         list.add(new MissionDesc());
         list.add(new MissionDesc());
         list.add(new MissionDesc());
         list.add(new MissionDesc());
-        missions.postValue(list);
+        recommendMissions.setValue(list);
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java b/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java
new file mode 100644
index 0000000..1349dac
--- /dev/null
+++ b/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java
@@ -0,0 +1,16 @@
+package com.duqing.missions.ui.main.home.adapter;
+
+import com.duqing.missions.MainActivity;
+import com.duqing.missions.base.BaseAdapter;
+import com.duqing.missions.databinding.HomtItemRecommendBinding;
+import com.duqing.missions.ui.main.home.model.MissionDesc;
+
+/**
+ * Created by Administrator on 2021/10/29 0029.
+ */
+public class MissionAdapter extends BaseAdapter<HomtItemRecommendBinding, MainActivity, MissionDesc> {
+    @Override
+    protected void bindView(ViewBindHolder holder, MissionDesc data, int position) {
+
+    }
+}
diff --git a/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissiontTopAdapter.java b/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java
similarity index 80%
rename from app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissiontTopAdapter.java
rename to app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java
index de21915..2a0090d 100644
--- a/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissiontTopAdapter.java
+++ b/app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java
@@ -8,7 +8,7 @@
 /**
  * Created by Administrator on 2021/10/28 0028.
  */
-public class MissiontTopAdapter extends BaseAdapter<HomeItemTopBinding, MainActivity, MissionDesc> {
+public class MissionTopAdapter extends BaseAdapter<HomeItemTopBinding, MainActivity, MissionDesc> {
 
 
     @Override
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 6ed5bfb..0eb77bd 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -25,57 +25,62 @@
         app:layout_constraintBottom_toBottomOf="parent"
         >
 
-        <androidx.constraintlayout.widget.ConstraintLayout
+        <androidx.core.widget.NestedScrollView
             android:layout_width="match_parent"
-            android:layout_height="match_parent" >
+            android:layout_height="match_parent">
 
-
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/recycler_top"
+            <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:overScrollMode="never"
-                app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
-                app:spanCount="3"
-                tools:itemCount="3"
-                tools:listitem="@layout/home_item_top" />
+                android:layout_height="wrap_content" >
 
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/recycler_classify"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:overScrollMode="never"
-                tools:listitem="@layout/home_item_classify"
-                app:layout_constraintTop_toBottomOf="@id/recycler_top"
-                app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
-                app:spanCount="5"
-                tools:itemCount="3"
-                tools:layout_editor_absoluteX="1dp"
-                tools:layout_editor_absoluteY="247dp"/>
 
-            <TextView
-                android:id="@+id/text_recommend"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                app:layout_constraintTop_toBottomOf="@id/recycler_classify"
-                app:layout_constraintLeft_toLeftOf="parent"
-                android:textSize="14dp"
-                android:text="任务推荐"
-                android:textColor="@color/black"
-                android:layout_margin="@dimen/frame_margin_lr" />
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recycler_top"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:overScrollMode="never"
+                    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
+                    app:spanCount="3"
+                    tools:itemCount="3"
+                    tools:listitem="@layout/home_item_top" />
 
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/recycler_recommend"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:overScrollMode="never"
-                tools:listitem="@layout/homt_item_recommend"
-                app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/text_recommend"
-                />
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recycler_classify"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="10dp"
+                    android:overScrollMode="never"
+                    tools:listitem="@layout/home_item_classify"
+                    app:layout_constraintTop_toBottomOf="@id/recycler_top"
+                    app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
+                    app:spanCount="5"
+                    tools:itemCount="3"
+                    tools:layout_editor_absoluteX="1dp"
+                    tools:layout_editor_absoluteY="247dp"/>
 
-        </androidx.constraintlayout.widget.ConstraintLayout>
+                <TextView
+                    android:id="@+id/text_recommend"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    app:layout_constraintTop_toBottomOf="@id/recycler_classify"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    android:textSize="14dp"
+                    android:text="任务推荐"
+                    android:textColor="@color/black"
+                    android:layout_margin="@dimen/frame_margin_lr" />
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recycler_recommend"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:overScrollMode="never"
+                    tools:listitem="@layout/homt_item_recommend"
+                    app:layout_constraintLeft_toLeftOf="parent"
+                    app:layout_constraintTop_toBottomOf="@id/text_recommend"
+                    />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+        </androidx.core.widget.NestedScrollView>
     </com.scwang.smart.refresh.layout.SmartRefreshLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file

--
Gitblit v1.9.1