Просмотр исходного кода

优化登录页和首页显示,防止异常

Frankensteinly 9 месяцев назад
Родитель
Сommit
46e5d8613a

+ 18 - 13
app/src/main/java/com/grkj/iscs/view/activity/HomeActivity.kt

@@ -43,18 +43,20 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
     override fun initView() {
         presenter?.registerStatusListener()
 
-        val userInfo = intent.getSerializableExtra("userInfo") as UserInfoRespVO
-        if (userInfo.roles?.any { it == USER_ROLE_DRAWER || it == USER_ROLE_LOCKER || it == USER_ROLE_COLOCKER || it == USER_ROLE_GUARD } == true) {
-            mMenuList.addAll(mutableListOf(
-                Menu(getString(R.string.job_management), R.mipmap.job_management, JobManagementFragment()),
-                Menu(getString(R.string.material_management), R.mipmap.material_management, MaterialManagementFragment())
-            ))
-        }
-        if (userInfo.roles?.any { it == USER_ROLE_ADMHDWTESTER } == true) {
-            mMenuList.add(Menu(getString(R.string.test), R.mipmap.menu_icon_test, DockTestFragment()))
-        }
-        if (userInfo.roles?.any { it == USER_ROLE_ADMHDWSETTER } == true) {
-            mMenuList.add(Menu(getString(R.string.system_setting), R.mipmap.menu_icon_sys_setting, SystemSettingFragment()))
+        val userInfo = intent.getSerializableExtra("userInfo")
+        if (userInfo != null && (userInfo as UserInfoRespVO).roles != null) {
+            if (userInfo.roles?.any { it == USER_ROLE_DRAWER || it == USER_ROLE_LOCKER || it == USER_ROLE_COLOCKER || it == USER_ROLE_GUARD } == true) {
+                mMenuList.addAll(mutableListOf(
+                    Menu(getString(R.string.job_management), R.mipmap.job_management, JobManagementFragment()),
+                    Menu(getString(R.string.material_management), R.mipmap.material_management, MaterialManagementFragment())
+                ))
+            }
+            if (userInfo.roles?.any { it == USER_ROLE_ADMHDWTESTER } == true) {
+                mMenuList.add(Menu(getString(R.string.test), R.mipmap.menu_icon_test, DockTestFragment()))
+            }
+            if (userInfo.roles?.any { it == USER_ROLE_ADMHDWSETTER } == true) {
+                mMenuList.add(Menu(getString(R.string.system_setting), R.mipmap.menu_icon_sys_setting, SystemSettingFragment()))
+            }
         }
         mMenuList.add(Menu(getString(R.string.settings), R.mipmap.settings, SettingFragment()))
 
@@ -65,9 +67,12 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
             mBinding?.itemSetting?.root?.setBackgroundColor(getColor(R.color.common_bg_white_30))
             mBinding?.rvMenu?.adapter?.notifyDataSetChanged()
         }
+        if (mMenuList.size == 1) {
+            mBinding?.itemSetting?.root?.setBackgroundColor(getColor(R.color.common_bg_white_30))
+        }
 
         mBinding?.vp?.isUserInputEnabled = false
-        mBinding?.vp?.offscreenPageLimit = mMenuList.size
+        mBinding?.vp?.offscreenPageLimit = if (mMenuList.isEmpty()) 1 else mMenuList.size
         mBinding?.vp?.adapter = MenuAdapter(supportFragmentManager, lifecycle, mMenuList)
 
         mBinding?.rvMenu?.adapter = object : CommonAdapter<Menu>(this, R.layout.item_rv_menu, mMenuList) {

+ 13 - 13
app/src/main/java/com/grkj/iscs/view/activity/LoginActivity.kt

@@ -2,14 +2,12 @@ package com.grkj.iscs.view.activity
 
 import android.content.Intent
 import android.widget.ImageView
-import com.bumptech.glide.Glide
 import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.ActivityLoginBinding
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.Constants
 import com.grkj.iscs.util.AppUtils
-import com.grkj.iscs.util.Executor
 import com.grkj.iscs.view.base.BaseMvpActivity
 import com.grkj.iscs.view.dialog.LoginDialog
 import com.grkj.iscs.view.iview.ILoginView
@@ -20,6 +18,7 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginBinding>() {
 
     private var cardLoginDialog: LoginDialog? = null
+    private var mLoginTypeList = mutableListOf<LoginType>()
 
     override val viewBinding: ActivityLoginBinding
         get() = ActivityLoginBinding.inflate(layoutInflater)
@@ -31,22 +30,21 @@ class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginB
         mBinding?.tvVersion?.text = "v${AppUtils.getPkgVerName(this)}"
 
         mBinding?.main?.setBackgroundResource(R.mipmap.login_bg)
-        val pairList = mutableListOf(
-            Pair(getString(R.string.login_face), R.mipmap.login_face),
-            Pair(getString(R.string.login_card), R.mipmap.login_card),
-            Pair(getString(R.string.login_account), R.mipmap.login_account)
-        )
+
+        mLoginTypeList.add(LoginType(getString(R.string.login_face), R.mipmap.login_face, 0))
         if (Constants.DEVICE_TYPE != 2) {
-            pairList.add(Pair(getString(R.string.login_fingerprint), R.mipmap.login_fingerprint))
+            mLoginTypeList.add(LoginType(getString(R.string.login_fingerprint), R.mipmap.login_fingerprint, 1))
         }
+        mLoginTypeList.add(LoginType(getString(R.string.login_card), R.mipmap.login_card, 2))
+        mLoginTypeList.add(LoginType(getString(R.string.login_account), R.mipmap.login_account, 3))
 
         mBinding?.rvType?.adapter =
-            object : CommonAdapter<Pair<String, Int>>(this, R.layout.item_rv_login, pairList) {
-                override fun convert(holder: ViewHolder, pair: Pair<String, Int>, position: Int) {
-                    holder.setText(R.id.tv_name, pair.first)
-                    holder.getView<ImageView>(R.id.iv_icon).setImageResource(pair.second)
+            object : CommonAdapter<LoginType>(this, R.layout.item_rv_login, mLoginTypeList) {
+                override fun convert(holder: ViewHolder, data: LoginType, position: Int) {
+                    holder.setText(R.id.tv_name, data.name)
+                    holder.getView<ImageView>(R.id.iv_icon).setImageResource(data.icon)
                     holder.setOnClickListener(R.id.root) {
-                        showLoginDialog(position)
+                        showLoginDialog(data.type)
                     }
                 }
             }
@@ -97,4 +95,6 @@ class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginB
     override fun initPresenter(): LoginPresenter {
         return LoginPresenter()
     }
+
+    private data class LoginType(val name: String, val icon: Int, val type: Int)
 }

+ 2 - 2
app/src/main/java/com/grkj/iscs/view/dialog/LoginDialog.kt

@@ -48,11 +48,11 @@ class LoginDialog(val presenter: LoginPresenter?, val ctx: Context, private var
     /**
      * 根据类型显示弹框
      *
-     * @param loginType 0:人脸 1:工卡 2:账号 3:指纹
+     * @param loginType 0:人脸 1:指纹 2:工卡 3:账号
      */
     fun showByType(loginType: Int) {
         mLoginType = loginType
-        if (loginType == 2) {
+        if (loginType == 3) {
             mBinding?.llAccountContainer?.visibility = View.VISIBLE
             mBinding?.llEasyContainer?.visibility = View.GONE
         } else {