作者 杨谦

1.部分ui显示功能缺失添加

2.部分ui显示样式修改
todo:剩余问题处理
正在显示 20 个修改的文件 包含 180 行增加154 行删除
... ... @@ -9,8 +9,8 @@ import java.io.File
* Description: 初见时你很迷人
*/
object Constant {
const val BASE_URL = "https://admin.anqixing.com"
// const val BASE_URL = "https://test.admin.anqixing.com"
// const val BASE_URL = "https://admin.anqixing.com"
const val BASE_URL = "https://test.admin.anqixing.com"
const val USERNAME_KEY = "username"
const val USERID_KEY = "userid"
const val LOGIN_KEY = "login"
... ...
package com.br_technology.securitytrain_master.ui.view.bank.activity
import android.os.Bundle
import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentPagerAdapter
import com.alibaba.fastjson.JSON
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityMockBinding
import com.br_technology.securitytrain_master.ui.bean.PaperListDetail
import com.br_technology.securitytrain_master.ui.view.bank.adapter.MockExamAdapter
import com.br_technology.securitytrain_master.ui.view.bank.fragment.MockExamFragment
import com.br_technology.securitytrain_master.ui.view.bank.viewmodel.MockExamViewModel
import com.br_technology.securitytrain_master.util.sp_job_name
import com.br_technology.securitytrain_master.view.ClassifyPop
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
... ... @@ -40,21 +30,11 @@ class MockExamActivity :
smartRefresh.autoRefresh()
// 刷新回调函数
smartRefresh.setOnRefreshListener {
// 初始化页码为1
page = 1
// 请求接口
mViewModel.specialPracticeList(page)
// 完成刷新
smartRefresh.finishRefresh()
refresh()
}
// 加载回调函数
smartRefresh.setOnLoadMoreListener {
// 页码自动加1
++page
// 请求接口
mViewModel.specialPracticeList(page)
// 完成加载
smartRefresh.finishLoadMore()
loadMore()
}
// 适配器item点击函数
mockExamAdapter.setOnItemClickListener { _, _, position ->
... ... @@ -64,11 +44,24 @@ class MockExamActivity :
}
// 设置列表适配器
recycler.adapter = mockExamAdapter
}
}
}
private fun refresh(){
// 初始化页码为1
page = 1
// 请求接口
mViewModel.specialPracticeList(page)
}
private fun loadMore(){
// 页码自动加1
++page
// 请求接口
mViewModel.specialPracticeList(page)
}
override fun initDataObserver() {
// 网络返回数据回调函数
mViewModel.liveData.observe(this) {
... ... @@ -82,6 +75,7 @@ class MockExamActivity :
} else {
mockExamAdapter.addData(it.data.list)
}
binding.smartRefresh.setEnableLoadMore(!(it.data.list.size <= 20))
}
mViewModel.paperDetailLiveData.observe(this) {
... ...
package com.br_technology.securitytrain_master.ui.view.bank.activity
import android.content.Intent
import com.br_technology.securitytrain_master.databinding.ActivityPracticeListBinding
import com.br_technology.securitytrain_master.base.common.ConstantType
import com.br_technology.securitytrain_master.databinding.ActivityPracticeListBinding
import com.br_technology.securitytrain_master.ui.view.bank.adapter.PracticeListAdapter
import com.br_technology.securitytrain_master.ui.view.bank.viewmodel.PracticeViewModel
import com.br_technology.securitytrain_master.util.sp_job_name
import com.luck.picture.lib.tools.ToastUtils
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
... ... @@ -24,27 +23,17 @@ class PracticeListActivity : BaseLifeCycleActivity<PracticeViewModel, ActivityPr
super.initData()
binding.apply {
// 工种
toolBar.setRightText(sp_job_name)
// toolBar.setRightText(sp_job_name)
binding.apply {
// 自动刷新
smartRefresh.autoRefresh()
// 刷新回调函数
smartRefresh.setOnRefreshListener {
// 初始化页码为1
page = 1
// 请求接口
mViewModel.dayPracticeList(page)
// 完成刷新
smartRefresh.finishRefresh()
refresh();
}
// 加载回调函数
smartRefresh.setOnLoadMoreListener {
// 页码自动加1
++page
// 请求接口
mViewModel.dayPracticeList(page)
// 完成加载
smartRefresh.finishLoadMore()
loadMore()
}
// 适配器item点击函数
listAdapter.setOnItemClickListener { _, _, position ->
... ... @@ -68,6 +57,25 @@ class PracticeListActivity : BaseLifeCycleActivity<PracticeViewModel, ActivityPr
}
}
private fun refresh() {
// 初始化页码为1
page = 1
// 请求接口
mViewModel.dayPracticeList(page)
}
private fun loadMore() {
// 页码自动加1
++page
// 请求接口
mViewModel.dayPracticeList(page)
}
override fun onResume() {
super.onResume()
refresh()
}
override fun initDataObserver() {
mViewModel.dayPracticeLiveData.observe(this) {
// 当返回数据<=初始条数时表示没有更多数据
... ... @@ -80,6 +88,9 @@ class PracticeListActivity : BaseLifeCycleActivity<PracticeViewModel, ActivityPr
} else {
listAdapter.addData(it.data.list.data)
}
binding.smartRefresh.finishRefresh()
binding.smartRefresh.finishLoadMore()
binding.smartRefresh.setEnableLoadMore(!(it.data.list.data.size <= 20))
}
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.view.home.activity
import android.os.Bundle
import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityLiveCourseBinding
import com.br_technology.securitytrain_master.ui.view.bank.viewmodel.BankViewModel
... ... @@ -12,9 +9,7 @@ import com.br_technology.securitytrain_master.ui.view.home.event.GetWorkTypeEven
import com.br_technology.securitytrain_master.ui.view.home.fragment.OnLiveCourseFragment
import com.br_technology.securitytrain_master.util.TYPE_All
import com.br_technology.securitytrain_master.util.TYPE_LIVE
import com.br_technology.securitytrain_master.util.sp_job_name
import com.br_technology.securitytrain_master.view.ClassifyPop
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
import com.google.android.material.tabs.TabLayout
import com.gyf.immersionbar.ImmersionBar
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
... ... @@ -62,24 +57,24 @@ class LiveCourseActivity
override fun initData() {
super.initData()
binding.apply {
toolBar.setRightText(sp_job_name)
toolBar.setRightTextDrawable(
ContextCompat.getDrawable(
baseContext,
R.mipmap.down_arrow
)
)
toolBar.addRightListener(object : ToolBarClickListener {
override fun onClick(view: View) {
if (mViewModel.beanData().value == null) {
mViewModel.workType()
} else {
mViewModel.beanData().value?.apply {
classifyPop.showAsDropDown(binding.toolBar)
}
}
}
})
// toolBar.setRightText(sp_job_name)
// toolBar.setRightTextDrawable(
// ContextCompat.getDrawable(
// baseContext,
// R.mipmap.down_arrow
// )
// )
// toolBar.addRightListener(object : ToolBarClickListener {
// override fun onClick(view: View) {
// if (mViewModel.beanData().value == null) {
// mViewModel.workType()
// } else {
// mViewModel.beanData().value?.apply {
// classifyPop.showAsDropDown(binding.toolBar)
// }
// }
// }
// })
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
... ...
... ... @@ -62,7 +62,7 @@ class OnlineActivity :
override fun initDataObserver() {
mViewModel.mVideoLessonBean.observe(this, {
binding.swipeRefreshlayout.isRefreshing = false
videoCourseAdapter?.loadMoreModule?.isEnableLoadMore = true
videoCourseAdapter?.loadMoreModule?.isEnableLoadMore = !(it.data.list.data.size < 10)
videoLessonList?.clear()
videoLessonList?.addAll(it.data.list.data)
... ... @@ -73,13 +73,13 @@ class OnlineActivity :
videoLessonList?.let { it1 -> videoCourseAdapter?.addData(it1) }
}
if (it.data.list.data != null) {
if (it.data.list.data.size < 10) {
videoCourseAdapter?.loadMoreModule?.loadMoreEnd()
} else {
videoCourseAdapter?.loadMoreModule?.loadMoreComplete()
}
}
// if (it.data.list.data != null) {
// if (it.data.list.data.size < 10) {
// videoCourseAdapter?.loadMoreModule?.loadMoreEnd()
// } else {
// videoCourseAdapter?.loadMoreModule?.loadMoreComplete()
// }
// }
++page
})
}
... ... @@ -88,7 +88,7 @@ class OnlineActivity :
videoCourseAdapter?.loadMoreModule?.setOnLoadMoreListener(object : OnLoadMoreListener {
override fun onLoadMore() {
binding.swipeRefreshlayout.isRefreshing = false
videoCourseAdapter?.loadMoreModule?.isEnableLoadMore = true
// videoCourseAdapter?.loadMoreModule?.isEnableLoadMore = true
mViewModel.videoLessons(1, "", page)
}
... ...
... ... @@ -10,7 +10,6 @@ import com.br_technology.securitytrain_master.ui.view.home.activity.course.TextD
import com.br_technology.securitytrain_master.ui.view.home.adapter.TextLessonsAdapter
import com.br_technology.securitytrain_master.ui.view.home.bean.TextLessonBean
import com.br_technology.securitytrain_master.ui.view.home.viewmodel.TextCourseViewModel
import com.chad.library.adapter.base.listener.OnLoadMoreListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
... ... @@ -29,16 +28,16 @@ class TextCourseActivity :
mViewModel.textLessons("", page)
binding.apply {
initAdapter()
initLoadMore()
swipeRefreshlayout.setOnRefreshListener {
textLessonsAdapter?.loadMoreModule?.isEnableLoadMore = false
page = 1
mViewModel.textLessons("", page)
}
swipeRefreshlayout.setOnLoadMoreListener {
page++
mViewModel.textLessons("", page)
}
}
}
... ... @@ -63,24 +62,22 @@ class TextCourseActivity :
}
fun initLoadMore() {
textLessonsAdapter?.loadMoreModule?.setOnLoadMoreListener(object : OnLoadMoreListener {
override fun onLoadMore() {
binding.swipeRefreshlayout.isRefreshing = false
textLessonsAdapter?.loadMoreModule?.isEnableLoadMore = true
mViewModel.textLessons("", page)
}
})
textLessonsAdapter?.loadMoreModule?.isAutoLoadMore = true
textLessonsAdapter?.loadMoreModule?.isEnableLoadMoreIfNotFullPage = false
// textLessonsAdapter?.loadMoreModule?.setOnLoadMoreListener(object : OnLoadMoreListener {
// override fun onLoadMore() {
// binding.swipeRefreshlayout.finishLoadMore()
// binding.swipeRefreshlayout.finishRefresh()
//
// }
// })
// textLessonsAdapter?.loadMoreModule?.isAutoLoadMore = true
// textLessonsAdapter?.loadMoreModule?.isEnableLoadMoreIfNotFullPage = false
}
override fun initDataObserver() {
mViewModel.mTextLessonBean.observe(this, {
binding.swipeRefreshlayout.isRefreshing = false
textLessonsAdapter?.loadMoreModule?.isEnableLoadMore = true
binding.swipeRefreshlayout.finishLoadMore()
binding.swipeRefreshlayout.finishRefresh()
if (page == 1) {
textLessonsAdapter?.setList(it.data.list.data)
} else {
... ... @@ -88,13 +85,8 @@ class TextCourseActivity :
}
if (it.data.list.data != null) {
if (it.data.list.data.size < 10) {
textLessonsAdapter?.loadMoreModule?.loadMoreEnd()
} else {
textLessonsAdapter?.loadMoreModule?.loadMoreComplete()
}
binding.swipeRefreshlayout.setEnableLoadMore(!(it.data.list.data.size < 10))
}
++page
})
}
}
\ No newline at end of file
... ...
... ... @@ -36,6 +36,7 @@ class OnLiveCourseFragment
if (it.data.list.data.size < 10) {
binding.smartRefresh.setNoMoreData(true)
}
binding.smartRefresh.setEnableLoadMore(!(it.data.list.data.size < 10))
if (page == 1) {
if (it.data.list.data.isEmpty()) {
binding.smartRefresh.visibility = View.GONE
... ...
package com.br_technology.securitytrain_master.ui.view.mine.activity
import android.graphics.Color
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.bigkoo.pickerview.builder.TimePickerBuilder
import com.br_technology.securitytrain_master.R
... ... @@ -22,7 +21,6 @@ import com.luck.picture.lib.config.PictureMimeType
import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.listener.OnResultCallbackListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
... ... @@ -60,6 +58,7 @@ class CredentialsUpLoadActivity :
title.setOnDismissListener {
finish()
}
toast("新增证件成功,请等待审核")
title.show()
}
}
... ...
... ... @@ -71,7 +71,8 @@ class ClassDutyCourseFragment(val type: Int) :
@SuppressLint("SetTextI18n")
override fun initDataObserver() {
mViewModel.listCourse.observe(this, {
binding.smartRefresh.isRefreshing = false
binding.smartRefresh.finishLoadMore()
binding.smartRefresh.finishRefresh()
lessonBean = it.data
if (lessonBean!!.lesson_class_count > 0) {
binding.prUploadValue.progress = 100 *
... ... @@ -89,14 +90,11 @@ class ClassDutyCourseFragment(val type: Int) :
} else {
courseAdapter?.addData(list)
}
if (list.size < 10) {
courseAdapter?.loadMoreModule?.loadMoreEnd()
} else {
courseAdapter?.loadMoreModule?.loadMoreComplete()
}
binding.smartRefresh.setEnableLoadMore(!(list.size < 10))
})
mViewModel.listPractise.observe(this, {
binding.smartRefresh.isRefreshing = false
binding.smartRefresh.finishLoadMore()
binding.smartRefresh.finishRefresh()
val list = it.data.list
if (page == 1) {
trainTestAdapter = TrainTestAdapter()
... ... @@ -107,14 +105,11 @@ class ClassDutyCourseFragment(val type: Int) :
} else {
trainTestAdapter?.addData(transPracticeData(list))
}
if (list.size < 10) {
trainTestAdapter?.loadMoreModule?.loadMoreEnd()
} else {
trainTestAdapter?.loadMoreModule?.loadMoreComplete()
}
binding.smartRefresh.setEnableLoadMore(!(list.size < 10))
})
mViewModel.listExam.observe(this, {
binding.smartRefresh.isRefreshing = false
binding.smartRefresh.finishLoadMore()
binding.smartRefresh.finishRefresh()
val list = it.data.list
if (page == 1) {
trainTestAdapter = TrainTestAdapter()
... ... @@ -125,11 +120,7 @@ class ClassDutyCourseFragment(val type: Int) :
} else {
trainTestAdapter?.addData(transExamData(list))
}
if (list.size < 10) {
trainTestAdapter?.loadMoreModule?.loadMoreEnd()
} else {
trainTestAdapter?.loadMoreModule?.loadMoreComplete()
}
binding.smartRefresh.setEnableLoadMore(!(list.size < 10))
})
}
... ... @@ -199,25 +190,18 @@ class ClassDutyCourseFragment(val type: Int) :
binding.smartRefresh.setOnRefreshListener {
refreshData()
}
binding.smartRefresh.setOnLoadMoreListener {
loadMore()
}
when (type) {
ConstantType.TYPE_CLASS_COURSE -> {
courseAdapter = CourseAdapter()
binding.recyclerview.adapter = courseAdapter
courseAdapter?.loadMoreModule?.isAutoLoadMore = true
courseAdapter?.loadMoreModule?.isEnableLoadMoreIfNotFullPage = false
courseAdapter?.loadMoreModule?.setOnLoadMoreListener {
loadMore()
}
binding.tvNoData.text = "暂无课程"
}
else -> {
trainTestAdapter = TrainTestAdapter()
binding.recyclerview.adapter = trainTestAdapter
trainTestAdapter?.loadMoreModule?.isAutoLoadMore = true
trainTestAdapter?.loadMoreModule?.isEnableLoadMoreIfNotFullPage = false
courseAdapter?.loadMoreModule?.setOnLoadMoreListener {
loadMore()
}
if (ConstantType.TYPE_CLASS_PRACTICE == type) {
binding.tvNoData.text = "暂无练习"
} else {
... ...
... ... @@ -27,8 +27,9 @@ class CourseFragment :
BaseLifeCycleFragment<DatabaseFViewModel, FragmentCourseBinding>(FragmentCourseBinding::inflate) {
var page = 1
var docAdapter = TxtAdapter()
override fun initData() {
super.initData()
override fun onResume() {
super.onResume()
refresh()
}
... ...
... ... @@ -27,8 +27,9 @@ class DatabaseFragment :
var page = 1
var docAdapter = DocAdapter()
override fun initData() {
super.initData()
override fun onResume() {
super.onResume()
refresh()
}
... ...
... ... @@ -2,11 +2,10 @@ package com.br_technology.securitytrain_master.ui.view.mine.fragment
import android.content.Intent
import android.os.Bundle
import com.br_technology.securitytrain_master.R
import android.view.View
import com.br_technology.securitytrain_master.databinding.FragmentSpecialExercisesBinding
import com.br_technology.securitytrain_master.ui.bean.AnswerRecord
import com.br_technology.securitytrain_master.ui.view.bank.activity.AnswerRecordDetailsActivity
import com.br_technology.securitytrain_master.ui.view.home.pojo.VideoCourse
import com.br_technology.securitytrain_master.ui.view.mine.adapter.SpecialExercisesAdapter
import com.br_technology.securitytrain_master.ui.view.mine.viewmodel.SpecialExercisesFragmentViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleFragment
... ... @@ -37,10 +36,19 @@ class SpecialExercisesFragment
binding.smartRefresh.setNoMoreData(true)
}
if (page == 1) {
val list = it.data.list.data
exercisesAdapter.setNewInstance(it.data.list.data as MutableList<AnswerRecord>)
if (list.isEmpty()) {
binding.tvNoData.visibility = View.VISIBLE
binding.smartRefresh.visibility = View.GONE
} else {
binding.smartRefresh.visibility = View.VISIBLE
binding.tvNoData.visibility = View.GONE
}
} else {
exercisesAdapter.addData(it.data.list.data)
}
binding.smartRefresh.setEnableLoadMore(!(it.data.list.data.size <= 20))
}
}
... ... @@ -48,7 +56,6 @@ class SpecialExercisesFragment
super.initData()
type = arguments?.getInt("type") ?: 1
binding.apply {
smartRefresh.setOnRefreshListener {
page = 1
... ... @@ -67,8 +74,6 @@ class SpecialExercisesFragment
intent.putExtra("id", exercisesAdapter.data[position].id)
startActivity(intent)
}
}
}
... ...
... ... @@ -7,6 +7,7 @@ import android.text.Spannable
import android.text.SpannableString
import android.text.style.AbsoluteSizeSpan
import android.text.style.ForegroundColorSpan
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import androidx.core.content.ContextCompat
... ... @@ -115,6 +116,7 @@ class DialogTitle(context: Context) : Dialog(context, R.style.UserDefaultDialog)
fun setInfo(title: String): DialogTitle {
binding.info.text = title
binding.info.gravity = Gravity.START
binding.info.visibility = View.VISIBLE
return this
}
... ...
... ... @@ -70,7 +70,7 @@
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
android:layout_weight="1"
android:text="有效期时间"
android:text="初始取证时间"
android:textColor="@color/color_32"
android:textSize="14sp" />
... ...
... ... @@ -37,6 +37,7 @@
<ImageView
android:id="@+id/share"
android:visibility="gone"
android:layout_width="48dp"
android:layout_height="match_parent"
android:foreground="?android:attr/selectableItemBackground"
... ...
... ... @@ -13,22 +13,29 @@
android:layout_height="wrap_content"
app:toolTitle="文本课程" />
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp"
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/swipeRefreshlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="16dp">
<com.scwang.smart.refresh.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/course_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/course_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</LinearLayout>
\ No newline at end of file
... ...
... ... @@ -41,6 +41,7 @@
android:layout_height="match_parent"
android:foreground="?android:attr/selectableItemBackground"
android:padding="12dp"
android:visibility="gone"
android:src="@mipmap/share" />
</LinearLayout>
... ...
... ... @@ -22,12 +22,16 @@
android:background="@color/white"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<com.scwang.smart.refresh.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
... ... @@ -38,7 +42,11 @@
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
<LinearLayout
android:id="@+id/ll"
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smart.refresh.layout.SmartRefreshLayout
<TextView
android:id="@+id/tv_no_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="暂无答题记录"
android:gravity="center"
android:visibility="gone" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smart.refresh.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
... ... @@ -21,6 +35,9 @@
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<com.scwang.smart.refresh.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.scwang.smart.refresh.layout.SmartRefreshLayout>
</LinearLayout>
\ No newline at end of file
</FrameLayout>
\ No newline at end of file
... ...
... ... @@ -12,4 +12,11 @@
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/my_credentials_upload_bg" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:text="上传证件"/>
</LinearLayout>
\ No newline at end of file
... ...