| | |
| | | package com.sinata.xqmuse.ui.course |
| | | |
| | | import androidx.recyclerview.widget.LinearLayoutManager |
| | | import cn.sinata.xldutils.activity.BaseActivity |
| | | import android.util.TypedValue |
| | | import android.view.ViewGroup |
| | | import androidx.fragment.app.Fragment |
| | | import androidx.fragment.app.FragmentPagerAdapter |
| | | import androidx.viewpager.widget.ViewPager |
| | | import cn.sinata.xldutils.fragment.BaseFragment |
| | | import cn.sinata.xldutils.gone |
| | | import cn.sinata.xldutils.visible |
| | | import com.sinata.xqmuse.R |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.entity.* |
| | | import com.sinata.xqmuse.network.requestByF |
| | | import com.sinata.xqmuse.ui.course.adapter.* |
| | | import com.sinata.xqmuse.ui.home.adapter.CourseAdapter |
| | | import com.sinata.xqmuse.ui.home.adapter.HomeBannerAdapter |
| | | import com.sinata.xqmuse.utils.Const |
| | | import com.sinata.xqmuse.utils.event.EmptyEvent |
| | | import com.sinata.xqmuse.utils.extention.clickDelay |
| | | import com.youth.banner.indicator.CircleIndicator |
| | | import kotlinx.android.synthetic.main.fragment_course.* |
| | | import org.greenrobot.eventbus.EventBus |
| | | import org.greenrobot.eventbus.Subscribe |
| | | import org.jetbrains.anko.support.v4.startActivity |
| | | import org.jetbrains.anko.textColorResource |
| | | |
| | | class CourseFragment : BaseFragment() { |
| | | override fun contentViewId() = R.layout.fragment_course |
| | | |
| | | private val bannerImg = arrayListOf<Banner>() |
| | | // private val bannerAdapter by lazy { |
| | | // HomeBannerAdapter(bannerImg, requireContext()) |
| | | // } |
| | | |
| | | private val filterList = arrayListOf<Filter>() |
| | | private val filterAdapter = FilterAdapter(filterList) |
| | | |
| | | private var page = 1 |
| | | var search: String? = null //搜索 |
| | | |
| | | private val course = arrayListOf<Course>() |
| | | private val courseAdapter = CourseAdapter(course) |
| | | private val frags = arrayListOf<Fragment>() |
| | | |
| | | override fun onFirstVisibleToUser() { |
| | | EventBus.getDefault().register(this) |
| | | // banner.adapter = bannerAdapter |
| | | banner.indicator = CircleIndicator(requireContext()) |
| | | rv_filter.layoutManager = LinearLayoutManager(requireContext()) |
| | | rv_filter.adapter = filterAdapter |
| | | frags.add(PushCourseFragment()) |
| | | frags.add(TeacherFragment()) |
| | | view_pager.adapter = object :FragmentPagerAdapter(childFragmentManager){ |
| | | override fun getCount() = 2 |
| | | |
| | | rv_course.layoutManager = LinearLayoutManager(requireContext()) |
| | | rv_course.adapter = courseAdapter |
| | | courseAdapter.setOnItemClickListener { view, position -> |
| | | startActivity<CourseDetailActivity>("id" to course[position].id) |
| | | override fun getItem(position: Int) = frags[position] |
| | | |
| | | override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { |
| | | |
| | | } |
| | | } |
| | | view_pager.offscreenPageLimit = 2 |
| | | cb_pub.setOnClickListener { |
| | | view_pager.currentItem = 0 |
| | | } |
| | | cb_teacher.setOnClickListener { |
| | | view_pager.currentItem = 1 |
| | | } |
| | | view_pager.setOnPageChangeListener(object :ViewPager.OnPageChangeListener{ |
| | | override fun onPageScrolled( |
| | | position: Int, |
| | | positionOffset: Float, |
| | | positionOffsetPixels: Int |
| | | ) { |
| | | |
| | | } |
| | | |
| | | tv_my_course.setOnClickListener { |
| | | startActivity<MyCourseActivity>() |
| | | override fun onPageSelected(position: Int) { |
| | | checkTab(position) |
| | | } |
| | | |
| | | tv_search.clickDelay { |
| | | val s = et_search.text.toString() |
| | | search = if (s.isNullOrEmpty()) null else s |
| | | (requireActivity() as BaseActivity).hideInputMethod() |
| | | refreshLayout.autoRefresh() |
| | | override fun onPageScrollStateChanged(state: Int) { |
| | | } |
| | | }) |
| | | } |
| | | |
| | | refreshLayout.setOnRefreshListener { |
| | | val s = et_search.text.toString() |
| | | search = if (s.isNullOrEmpty()) null else s |
| | | page = 1 |
| | | getData() |
| | | private fun checkTab(i: Int){ |
| | | if (i == 0){ |
| | | cb_pub.textColorResource = R.color.textColor |
| | | cb_pub.setTextSize(TypedValue.COMPLEX_UNIT_SP,21f) |
| | | iv_tab_1.visible() |
| | | cb_teacher.textColorResource = R.color.textColor99 |
| | | cb_teacher.setTextSize(TypedValue.COMPLEX_UNIT_SP,16f) |
| | | iv_tab_2.gone() |
| | | }else{ |
| | | cb_teacher.textColorResource = R.color.textColor |
| | | cb_teacher.setTextSize(TypedValue.COMPLEX_UNIT_SP,21f) |
| | | iv_tab_2.visible() |
| | | cb_pub.textColorResource = R.color.textColor99 |
| | | cb_pub.setTextSize(TypedValue.COMPLEX_UNIT_SP,16f) |
| | | iv_tab_1.gone() |
| | | } |
| | | refreshLayout.setOnLoadMoreListener { |
| | | page++ |
| | | getData() |
| | | } |
| | | banner.setOnBannerListener { data, position -> |
| | | val banner = data as Banner |
| | | banner.jumpPage(requireContext()) |
| | | } |
| | | getImg() |
| | | getFilter() |
| | | page = 1 |
| | | getData() |
| | | } |
| | | |
| | | private fun getFilter() { |
| | | HttpManager.getList().requestByF(this){_, data-> |
| | | filterList.clear() |
| | | filterList.add(Filter("类型:",data?.fitnessType?: arrayListOf())) |
| | | filterList.add(Filter("部位:",data?.fitnessPosition?: arrayListOf())) |
| | | val diff = arrayListOf<FilterItem>() |
| | | diff.add(FilterItem(1,"H1")) |
| | | diff.add(FilterItem(2,"H2")) |
| | | diff.add(FilterItem(3,"H3")) |
| | | diff.add(FilterItem(4,"H4")) |
| | | diff.add(FilterItem(5,"H5")) |
| | | filterList.add(Filter("难度:",diff)) |
| | | val times = arrayListOf<FilterItem>() |
| | | times.add(FilterItem(1,"小于10分钟")) |
| | | times.add(FilterItem(2,"10-20分钟")) |
| | | times.add(FilterItem(3,"大于20分钟")) |
| | | filterList.add(Filter("时长:",times)) |
| | | filterAdapter.notifyDataSetChanged() |
| | | } |
| | | } |
| | | |
| | | |
| | | private fun getData() { |
| | | val diff = filterList.filter { it.name == "难度:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() } |
| | | val position = filterList.filter { it.name == "部位:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.name } |
| | | val times = filterList.filter { it.name == "时长:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() } |
| | | val types = filterList.filter { it.name == "类型:" }.firstOrNull()?.list?.filter { it.checked }?.joinToString (","){ it.id.toString() } |
| | | HttpManager.queryCourseList(page,if (diff.isNullOrEmpty()) null else diff, |
| | | if (position.isNullOrEmpty()) null else position,if (times.isNullOrEmpty()) null else times, |
| | | if (types.isNullOrEmpty()) null else types,search).requestByF(this,success = {_,data-> |
| | | if (page == 1) |
| | | course.clear() |
| | | course.addAll(data?: arrayListOf()) |
| | | courseAdapter.notifyDataSetChanged() |
| | | if (course.isEmpty()) |
| | | refreshLayout.finishRefreshWithNoMoreData() |
| | | else if (data.isNullOrEmpty()) |
| | | refreshLayout.finishLoadMoreWithNoMoreData() |
| | | else if (page == 1) |
| | | refreshLayout.finishRefresh() |
| | | else |
| | | refreshLayout.finishLoadMore() |
| | | }){_,_-> |
| | | if (page == 1) |
| | | refreshLayout.finishRefresh(false) |
| | | else |
| | | refreshLayout.finishLoadMore(false) |
| | | } |
| | | } |
| | | |
| | | private fun getImg(){ |
| | | HttpManager.queryBanner().requestByF(this){ _, data-> |
| | | bannerImg.clear() |
| | | bannerImg.addAll(data?: arrayListOf()) |
| | | // bannerAdapter.notifyDataSetChanged() |
| | | banner.currentItem = 1 |
| | | } |
| | | } |
| | | |
| | | @Subscribe |
| | | fun refresh(e:EmptyEvent){ |
| | | if (e.code == Const.EventCode.REFRESH_COURSE){ |
| | | refreshLayout.resetNoMoreData() |
| | | page = 1 |
| | | getData() |
| | | } |
| | | } |
| | | |
| | | override fun onDestroy() { |
| | | super.onDestroy() |
| | | EventBus.getDefault().unregister(this) |
| | | } |
| | | |
| | | } |