package com.dollearn.student.ui.home
|
|
import android.annotation.SuppressLint
|
import android.os.Handler
|
import android.os.Looper
|
import android.os.Message
|
import android.view.ViewGroup
|
import androidx.core.os.bundleOf
|
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.FragmentPagerAdapter
|
import androidx.viewpager.widget.ViewPager
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.visible
|
import com.dollearn.student.R
|
import com.dollearn.student.dialog.TipDialog
|
import com.dollearn.student.network.HttpManager
|
import com.dollearn.student.network.entity.Subject
|
import com.dollearn.student.network.entity.SubjectBean
|
import com.dollearn.student.network.request
|
import com.dollearn.student.ui.TransparentStatusBarActivity
|
import com.dollearn.student.utils.Const
|
import com.dollearn.student.utils.event.EmptyEvent
|
import kotlinx.android.synthetic.main.activity_listen.*
|
import org.greenrobot.eventbus.EventBus
|
|
class IncludeActivity:TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_listen
|
|
private val day by lazy {
|
intent.getIntExtra("day",0)
|
}
|
private val week by lazy {
|
intent.getIntExtra("week",0)
|
}
|
private val season by lazy {
|
intent.getIntExtra("season",0)
|
}
|
val data by lazy { intent.getParcelableExtra<SubjectBean>("data") }
|
val fragments = arrayListOf<Fragment>()
|
|
var totalCount = 0 //总答题次数
|
var rightCount = 0 //正确答题次数
|
var time = 0 //学习秒数
|
private var handler:Handler? = null
|
|
override fun initClick() {
|
tv_last.setOnClickListener {
|
(fragments[view_pager.currentItem-1] as IncludeFragment).recover()
|
view_pager.setCurrentItem(view_pager.currentItem-1,true)
|
if (view_pager.currentItem == 0)
|
tv_last.gone()
|
}
|
|
tv_exit.setOnClickListener {
|
onBackPressed()
|
}
|
}
|
|
fun next(){
|
if (view_pager.currentItem == fragments.lastIndex){
|
handler?.removeMessages(0)
|
ResultActivity.startResult(this,day,week,season,3,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
|
finish()
|
}else{
|
(fragments[view_pager.currentItem+1] as IncludeFragment).recover()
|
view_pager.setCurrentItem(view_pager.currentItem+1,true)
|
tv_last.visible()
|
}
|
}
|
|
override fun initView() {
|
data?.apply {
|
tv_progress.text = "已完成:1/${subjectList.size}"
|
subjectList.forEachIndexed { index, subject ->
|
fragments.add(IncludeFragment.getInstance(index))
|
}
|
view_pager.adapter = @SuppressLint("WrongConstant")
|
object : FragmentPagerAdapter(supportFragmentManager,0) {
|
override fun getItem(p0: Int): Fragment {
|
return fragments[p0]
|
}
|
|
override fun getCount(): Int {
|
return fragments.size
|
}
|
|
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
|
}
|
}
|
view_pager.offscreenPageLimit = fragments.size
|
view_pager.addOnPageChangeListener(object :ViewPager.OnPageChangeListener{
|
override fun onPageScrolled(
|
position: Int,
|
positionOffset: Float,
|
positionOffsetPixels: Int
|
) {
|
|
}
|
|
override fun onPageSelected(position: Int) {
|
tv_progress.text = "已完成:${position+1}/${subjectList.size}"
|
}
|
|
override fun onPageScrollStateChanged(state: Int) {
|
}
|
})
|
}
|
recover()
|
handler= object :Handler(Looper.myLooper()!!){
|
override fun handleMessage(msg: Message) {
|
super.handleMessage(msg)
|
if (msg.what == 0){
|
time++
|
handler?.sendEmptyMessageDelayed(0,1000L)
|
}
|
}
|
}
|
handler?.sendEmptyMessageDelayed(0,1000L)
|
}
|
|
private fun recover(){
|
HttpManager.teamSchedule(day,week,3).request(this){_,data->
|
view_pager.setCurrentItem((data?.schedule?:1)-1,false)
|
if (view_pager.currentItem != 0)
|
tv_last.visible()
|
totalCount = data?.answerNumber?:0
|
rightCount = data?.correctNumber?:0
|
}
|
}
|
|
override fun onBackPressed() {
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
|
tipDialog.setCallback(object :TipDialog.OnClickCallback{
|
override fun onOk() {
|
val list = (data?.subjectList?.subList(0,view_pager.currentItem))
|
val arrayListOf = arrayListOf<Subject>()
|
list?.forEach { it ->
|
it.forEachIndexed { index, subject ->
|
if (index == 2||index == 4||index == 5){
|
arrayListOf.add(subject)
|
}
|
}
|
}
|
HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,3,data?.data?.id?:"", arrayListOf.joinToString(",") { it.id }).request(this@IncludeActivity){ _, _->
|
finish()
|
}
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.show(supportFragmentManager,"exit")
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.STOP_TIMER))
|
handler?.removeMessages(0)
|
handler = null
|
}
|
}
|