From 9904e5f900ba751c1fe719cdf889f00e9f1418e8 Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期三, 21 五月 2025 14:14:04 +0800 Subject: [PATCH] save --- app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt | 92 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 69 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt index e8abb61..fec15a7 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt @@ -8,16 +8,19 @@ import androidx.core.os.bundleOf import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentPagerAdapter +import androidx.recyclerview.widget.LinearLayoutManager 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.SortBean 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.ui.home.adapter.IndexAdapter import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import kotlinx.android.synthetic.main.activity_listen.* @@ -43,37 +46,96 @@ var time = 0 //学习秒数 private var handler:Handler? = null + val indexList = arrayListOf<SortBean>() + private val indexAdapter = IndexAdapter(indexList) + 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() + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("msg" to "是否重新开始答题?确认后将清空当前答题进度") + tipDialog.setCallback(object :TipDialog.OnClickCallback{ + override fun onOk() { + showDialog() + HttpManager.restart(day,week,3).request(this@IncludeActivity){_,_-> + totalCount = 0 //总答题次数 + rightCount = 0 //正确答题次数 + time = 0 //学习秒数 + indexList.forEach { it.status = 1 } + indexAdapter.notifyDataSetChanged() + data?.accuracy = 0.0 + view_pager.setCurrentItem(0,false) + (fragments[0] as IncludeFragment).recover() + } + } + + override fun onCancel() { + } + }) + tipDialog.show(supportFragmentManager,"restart") } tv_exit.setOnClickListener { onBackPressed() } + + + indexAdapter.setOnItemClickListener { view, position -> + val sortBean = indexList[position] + if (position!=view_pager.currentItem&&(sortBean.status!=1||position == indexList.indexOf(indexList.first { it.status == 1 }))){ + view_pager.setCurrentItem(position,false) + (fragments[position] as IncludeFragment).recover() + } + } } fun next(){ + val listenFragment = fragments[view_pager.currentItem] as IncludeFragment + val sortBean = indexList[view_pager.currentItem] + sortBean.status = if (listenFragment.right) 2 else 3 //修改本地答题结果,并上传服务器 + HttpManager.answerQuestion(sortBean).request(this){_,data-> + //保存成功 + } + val filter = indexList.filter { it.status != 1 } + data?.accuracy = filter.filter { it.status == 2 }.size.toDouble() / filter.size 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) + (fragments[view_pager.currentItem+1] as IncludeFragment).recover() tv_last.visible() + indexAdapter.notifyDataSetChanged() } } override fun initView() { + rv_index.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false) + rv_index.adapter = indexAdapter data?.apply { - tv_progress.text = "已完成:1/${subjectList.size}" + tv_progress.text = "已完成:1/%d\n正确率:%.2f%s".format(subjectList.size,accuracy*100,"%") + indexList.clear() + indexList.addAll(list) + indexAdapter.notifyDataSetChanged() subjectList.forEachIndexed { index, subject -> fragments.add(IncludeFragment.getInstance(index)) } + } + 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.adapter = @SuppressLint("WrongConstant") object : FragmentPagerAdapter(supportFragmentManager,0) { override fun getItem(p0: Int): Fragment { @@ -98,28 +160,12 @@ } override fun onPageSelected(position: Int) { - tv_progress.text = "已完成:${position+1}/${subjectList.size}" + tv_progress.text = "已完成:%d/%d\n正确率:%.2f%s".format(position+1,this@IncludeActivity.data!!.subjectList.size,this@IncludeActivity.data!!.accuracy*100,"%") } 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() -- Gitblit v1.7.1