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.base.BaseFragment; import com.duqing.missions.databinding.FragmentHomeBinding; import com.duqing.missions.ui.login.view.LoginActivity; 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; 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 { private HomeViewModel homeViewModel; final String TAG = "HomeFragment"; @Override public void initViews() { homeViewModel = new ViewModelProvider(this).get(HomeViewModel.class); binding.imgSearch.setOnClickListener(v -> startActivity(new Intent(getContext(), LoginActivity.class))); final SmartRefreshLayout smartRefresh = binding.smartRefresh; smartRefresh.setRefreshHeader(new ClassicsHeader(getContext())); smartRefresh.setRefreshFooter(new ClassicsFooter(getContext())); 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); 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 MissionTopAdapter topAdapter = new MissionTopAdapter(); recyclerTop.setAdapter(topAdapter); final MissionAdapter recommendAdapter = new MissionAdapter(); recyclerRecommend.setAdapter(recommendAdapter); homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(@Nullable String s) { textView.setText(s); } }); homeViewModel.getTopMissions().observe(getViewLifecycleOwner(), new Observer>() { @Override public void onChanged(List missionDescs) { smartRefresh.finishRefresh(); topAdapter.setData(missionDescs); } }); homeViewModel.getRecommendMissions().observeForever(new Observer>() { @Override public void onChanged(List missionDescs) { smartRefresh.finishLoadMore(); recommendAdapter.setData(missionDescs); } }); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { Log.e(TAG,"onCreateView"); return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onResume() { super.onResume(); Log.e(TAG,"onResume"); } @Override public void onPause() { super.onPause(); Log.e(TAG,"onPause"); } @Override public void onStop() { super.onStop(); Log.e(TAG,"onStop"); } @Override public void onDestroyView() { super.onDestroyView(); Log.e(TAG,"onDestroyView"); } }