From 855a7e18a795f0db2453a19e3e8f26ba2ff553b4 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期四, 29 五月 2025 16:32:41 +0800
Subject: [PATCH] UI调整
---
app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt | 64 ++++++++++++++++++++++++++++---
1 files changed, 57 insertions(+), 7 deletions(-)
diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
index 2771517..7086247 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
@@ -8,15 +8,18 @@
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.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.*
@@ -42,34 +45,79 @@
var time = 0 //学习秒数
private var handler:Handler? = null
+ val indexList = arrayListOf<SortBean>()
+ private val indexAdapter = IndexAdapter(indexList)
+
+ val vp by lazy { view_pager }
+ var recoverd = false //true已经恢复了进度,后续语音可以自动播放
+
override fun initClick() {
tv_last.setOnClickListener {
- (fragments[view_pager.currentItem-1] as QAFragment).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,4).request(this@QAActivity){_,_->
+ 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 QAFragment).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 QAFragment).recover()
+ }
+ }
}
fun next(){
+ val listenFragment = fragments[view_pager.currentItem] as QAFragment
+ 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,4,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
finish()
}else{
- (fragments[view_pager.currentItem+1] as QAFragment).recover()
view_pager.setCurrentItem(view_pager.currentItem+1,true)
+ (fragments[view_pager.currentItem+1] as QAFragment).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(QAFragment.getInstance(index))
}
@@ -97,7 +145,7 @@
}
override fun onPageSelected(position: Int) {
- tv_progress.text = "已完成:${position+1}/${subjectList.size}"
+ tv_progress.text = "已完成:%d/%d\n正确率:%.2f%s".format(position+1,subjectList.size,accuracy*100,"%")
}
override fun onPageScrollStateChanged(state: Int) {
@@ -124,6 +172,8 @@
tv_last.visible()
totalCount = data?.answerNumber?:0
rightCount = data?.correctNumber?:0
+ EventBus.getDefault().post(EmptyEvent(Const.EventCode.RECOVERD))
+ recoverd = true
}
}
--
Gitblit v1.7.1