Administrator
2021-10-29 6834b4502af1d4873737f989041be1360e201108
部分修改
2 files added
1 files renamed
4 files modified
196 ■■■■■ changed files
app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardFragment.java 25 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/dashboard/DashboardViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java 17 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/HomeViewModel.java 24 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionAdapter.java 16 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/adapter/MissionTopAdapter.java 2 ●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_home.xml 93 ●●●● 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>