|
@@ -9,6 +9,7 @@ import com.cooleshow.base.utils.SizeUtils;
|
|
|
import com.cooleshow.base.utils.Utils;
|
|
|
import com.cooleshow.institution.stu.R;
|
|
|
import com.cooleshow.institution.stu.adapter.HomeCardPageAdapter;
|
|
|
+import com.cooleshow.institution.stu.bean.HomeAlbumListBean;
|
|
|
import com.cooleshow.institution.stu.bean.HomePageMode;
|
|
|
import com.cooleshow.institution.stu.constants.Constants;
|
|
|
import com.cooleshow.institution.stu.constants.HomePageType;
|
|
@@ -35,11 +36,28 @@ import androidx.viewpager2.widget.ViewPager2;
|
|
|
*/
|
|
|
public class HomeCardFragment extends BaseMVPFragment<FgHomeCardLayoutBinding, HomePresenter> implements View.OnClickListener {
|
|
|
|
|
|
- private HomePageType[] pages = new HomePageType[]{HomePageType.TRACK_LIST, HomePageType.ALL_PRACTICE, HomePageType.SUBJECT_PRACTICE};
|
|
|
|
|
|
private HomeCardPageAdapter mCardPageAdapter;
|
|
|
private HomeViewModel mHomeViewModel;
|
|
|
|
|
|
+ private ViewPager2.OnPageChangeCallback mPageChangeCallback = new ViewPager2.OnPageChangeCallback() {
|
|
|
+ @Override
|
|
|
+ public void onPageSelected(int position) {
|
|
|
+ super.onPageSelected(position);
|
|
|
+ LOG.i("onPageSelected:" + position);
|
|
|
+ ArrayList<Fragment> fragments = mCardPageAdapter.getFragments();
|
|
|
+ if (fragments != null) {
|
|
|
+ for (int i = 0; i < fragments.size(); i++) {
|
|
|
+ Fragment fragment = fragments.get(i);
|
|
|
+ if (fragment instanceof CardAnimFragment) {
|
|
|
+ CardAnimFragment cardAnimFragment = (CardAnimFragment) fragment;
|
|
|
+ cardAnimFragment.startAnim(i == position);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
@Override
|
|
|
protected void initView(View rootView) {
|
|
|
Utils.setHeadView(mViewBinding.viewStatusBar, requireContext(), 0);
|
|
@@ -69,24 +87,6 @@ public class HomeCardFragment extends BaseMVPFragment<FgHomeCardLayoutBinding, H
|
|
|
mViewBinding.viewPager.registerOnPageChangeCallback(mPageChangeCallback);
|
|
|
}
|
|
|
|
|
|
- private ViewPager2.OnPageChangeCallback mPageChangeCallback = new ViewPager2.OnPageChangeCallback() {
|
|
|
- @Override
|
|
|
- public void onPageSelected(int position) {
|
|
|
- super.onPageSelected(position);
|
|
|
- LOG.i("onPageSelected:" + position);
|
|
|
- ArrayList<Fragment> fragments = mCardPageAdapter.getFragments();
|
|
|
- if (fragments != null) {
|
|
|
- for (int i = 0; i < fragments.size(); i++) {
|
|
|
- Fragment fragment = fragments.get(i);
|
|
|
- if (fragment instanceof CardAnimFragment) {
|
|
|
- CardAnimFragment cardAnimFragment = (CardAnimFragment) fragment;
|
|
|
- cardAnimFragment.startAnim(i == position);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
@Override
|
|
|
protected FgHomeCardLayoutBinding getLayoutView() {
|
|
|
return FgHomeCardLayoutBinding.inflate(getLayoutInflater());
|
|
@@ -117,48 +117,50 @@ public class HomeCardFragment extends BaseMVPFragment<FgHomeCardLayoutBinding, H
|
|
|
}
|
|
|
|
|
|
public void refreshUserInfo(StudentUserInfo data) {
|
|
|
- if (data != null) {
|
|
|
- int cPos = mViewBinding.viewPager.getCurrentItem();
|
|
|
- mViewBinding.tvName.setText(data.getTenantName());
|
|
|
- if (data.getTenantAlbumStatus() == Constants.HOME_PAGE_STATUS_EMPTY) {
|
|
|
- loadEmpty();
|
|
|
- } else {
|
|
|
- load(data.getTenantAlbumStatus());
|
|
|
- }
|
|
|
- if (cPos >= mCardPageAdapter.getFragments().size()) {
|
|
|
- cPos = 0;
|
|
|
- }
|
|
|
- mViewBinding.viewPager.setCurrentItem(cPos, false);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
private int currentStatus = -1;
|
|
|
|
|
|
- private void load(int status) {
|
|
|
- if (!isNeedRefresh(status)) {
|
|
|
+ private void load(HomeAlbumListBean data) {
|
|
|
+ int tenantAlbumStatus = data.getTenantAlbumStatus();
|
|
|
+ ArrayList<HomePageType> pageList = new ArrayList<>();
|
|
|
+ if (data.getSubjectCounts() > 0) {
|
|
|
+ //声部训练
|
|
|
+ pageList.add(HomePageType.SUBJECT_PRACTICE);
|
|
|
+ }
|
|
|
+ if (data.getMusicCounts() > 0) {
|
|
|
+ //独奏训练
|
|
|
+ pageList.add(HomePageType.TRACK_LIST);
|
|
|
+ }
|
|
|
+ if (data.getEnsembleCounts() > 0) {
|
|
|
+ //合奏训练
|
|
|
+ pageList.add(HomePageType.ALL_PRACTICE);
|
|
|
+ }
|
|
|
+ if (!isNeedRefresh(tenantAlbumStatus, pageList)) {
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
ArrayList<Fragment> list = new ArrayList<>();
|
|
|
- for (int i = 0; i < pages.length; i++) {
|
|
|
- HomePageType page = pages[i];
|
|
|
- CardAnimFragment cardAnimFragment = CardAnimFragment.newInstance(page.getValue(), page.getType(), status);
|
|
|
+ for (int i = 0; i < pageList.size(); i++) {
|
|
|
+ HomePageType page = pageList.get(i);
|
|
|
+ CardAnimFragment cardAnimFragment = CardAnimFragment.newInstance(page.getValue(), page.getType(), tenantAlbumStatus);
|
|
|
list.add(cardAnimFragment);
|
|
|
}
|
|
|
- this.currentStatus = status;
|
|
|
+ this.currentStatus = tenantAlbumStatus;
|
|
|
mCardPageAdapter.setFragments(list);
|
|
|
mViewBinding.viewPager.setAdapter(mCardPageAdapter);
|
|
|
// mCardPageAdapter.notifyDataSetChanged();
|
|
|
}
|
|
|
|
|
|
- private boolean isNeedRefresh(int status) {
|
|
|
- if (mCardPageAdapter.getItemCount() != pages.length || currentStatus != status) {
|
|
|
+ private boolean isNeedRefresh(int status, ArrayList<HomePageType> pageList) {
|
|
|
+ if (mCardPageAdapter.getItemCount() != pageList.size() || currentStatus != status) {
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private void loadEmpty() {
|
|
|
- if (mCardPageAdapter.getItemCount() == 1) {
|
|
|
+ private void loadEmpty(int status) {
|
|
|
+ if (currentStatus == status) {
|
|
|
return;
|
|
|
}
|
|
|
ArrayList<Fragment> list = new ArrayList<>();
|
|
@@ -166,6 +168,23 @@ public class HomeCardFragment extends BaseMVPFragment<FgHomeCardLayoutBinding, H
|
|
|
list.add(cardAnimFragment);
|
|
|
mCardPageAdapter.setFragments(list);
|
|
|
mViewBinding.viewPager.setAdapter(mCardPageAdapter);
|
|
|
+ currentStatus = status;
|
|
|
// mCardPageAdapter.notifyDataSetChanged();
|
|
|
}
|
|
|
+
|
|
|
+ public void refreshAlbumData(HomeAlbumListBean data) {
|
|
|
+ if (data != null) {
|
|
|
+ int cPos = mViewBinding.viewPager.getCurrentItem();
|
|
|
+ mViewBinding.tvName.setText(data.getTenantName());
|
|
|
+ if (data.getTenantAlbumStatus() == Constants.HOME_PAGE_STATUS_EMPTY) {
|
|
|
+ loadEmpty(data.getTenantAlbumStatus());
|
|
|
+ } else {
|
|
|
+ load(data);
|
|
|
+ }
|
|
|
+ if (cPos >= mCardPageAdapter.getFragments().size()) {
|
|
|
+ cPos = 0;
|
|
|
+ }
|
|
|
+ mViewBinding.viewPager.setCurrentItem(cPos, false);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|