| | |
| | | package com.duqing.missions.ui.main.home; |
| | | |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.util.Log; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.ImageView; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.lifecycle.ViewModelProvider; |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | import androidx.recyclerview.widget.LinearLayoutManager; |
| | | import androidx.recyclerview.widget.RecyclerView; |
| | | |
| | | import com.duqing.missions.MainActivity; |
| | | import com.duqing.missions.base.BaseFragment; |
| | | import com.duqing.missions.base.fragments.BaseLoadPageFragment; |
| | | import com.duqing.missions.data.BasePageResult; |
| | | import com.duqing.missions.databinding.FragmentHomeBinding; |
| | | import com.duqing.missions.ui.main.home.adapter.MissiontTopAdapter; |
| | | import com.duqing.missions.ui.login.view.LoginActivity; |
| | | import com.duqing.missions.ui.main.home.adapter.ClassifyAdapter; |
| | | 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.Classify; |
| | | import com.duqing.missions.ui.main.home.model.MissionDesc; |
| | | import com.scwang.smart.refresh.footer.ClassicsFooter; |
| | | import com.scwang.smart.refresh.header.ClassicsHeader; |
| | | import com.scwang.smart.refresh.layout.SmartRefreshLayout; |
| | | import com.scwang.smart.refresh.layout.api.RefreshLayout; |
| | | import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener; |
| | | |
| | | import java.util.List; |
| | | |
| | | public class HomeFragment extends BaseFragment<MainActivity,FragmentHomeBinding> { |
| | | public class HomeFragment extends BaseLoadPageFragment<FragmentHomeBinding,HomeViewModel,MissionAdapter, BasePageResult<String>> { |
| | | |
| | | private HomeViewModel homeViewModel; |
| | | final String TAG = "HomeFragment"; |
| | | |
| | | |
| | | @Override |
| | | public void initViews() { |
| | | homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class); |
| | | final SmartRefreshLayout smartRefresh = binding.smartRefresh; |
| | | smartRefresh.setRefreshHeader(new ClassicsHeader(getContext())); |
| | | smartRefresh.setRefreshFooter(new ClassicsFooter(getContext())); |
| | | super.initViews(); |
| | | binding.textSearch.setOnClickListener(v -> startActivity(new Intent(getContext(), LoginActivity.class))); |
| | | final TextView textView = binding.textRecommend; |
| | | final ImageView imgSearch = binding.imgSearch; |
| | | RecyclerView recyclerClassify = binding.recyclerClassify; |
| | | RecyclerView recyclerTop = binding.recyclerTop; |
| | | final RecyclerView recyclerRecommend = binding.recyclerRecommend; |
| | | recyclerRecommend.setLayoutManager(new LinearLayoutManager(getContext())); |
| | | LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); |
| | | layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); |
| | | recyclerClassify.setLayoutManager(layoutManager); |
| | | ClassifyAdapter classifyAdapter = new ClassifyAdapter(); |
| | | recyclerClassify.setAdapter(classifyAdapter); |
| | | recyclerTop.setLayoutManager(new GridLayoutManager(getContext(),3)); |
| | | smartRefresh.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { |
| | | @Override |
| | | public void onLoadMore(@NonNull RefreshLayout refreshLayout) { |
| | | homeViewModel.onLoadMore(); |
| | | } |
| | | |
| | | @Override |
| | | public void onRefresh(@NonNull RefreshLayout refreshLayout) { |
| | | homeViewModel.onRefresh(); |
| | | } |
| | | }); |
| | | final MissiontTopAdapter topAdapter = new MissiontTopAdapter(); |
| | | final MissionTopAdapter topAdapter = new MissionTopAdapter(); |
| | | recyclerTop.setAdapter(topAdapter); |
| | | 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>>() { |
| | | viewModel.getTopMissions().observe(getViewLifecycleOwner(), new Observer<List<MissionDesc>>() { |
| | | @Override |
| | | public void onChanged(List<MissionDesc> missionDescs) { |
| | | smartRefresh.finishRefresh(); |
| | | smartRefresh.finishLoadMore(); |
| | | topAdapter.setData(missionDescs); |
| | | } |
| | | }); |
| | | viewModel.getRecommendMissions().observeForever(new Observer<List<MissionDesc>>() { |
| | | @Override |
| | | public void onChanged(List<MissionDesc> missionDescs) { |
| | | smartRefresh.finishLoadMore(); |
| | | adapter.setData(missionDescs); |
| | | } |
| | | }); |
| | | viewModel.getClassifies().observeForever(new Observer<List<Classify>>() { |
| | | @Override |
| | | public void onChanged(List<Classify> cliassifies) { |
| | | classifyAdapter.setData(cliassifies); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Nullable |