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