app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java | ●●●●● patch | view | raw | blame | history | |
app/src/main/res/layout/fragment_home.xml | ●●●●● patch | view | raw | blame | history |
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; } } app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java
New file @@ -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; } } 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 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); } } app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java
New file @@ -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) { } } app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java
File was renamed from app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissiontTopAdapter.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 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>