Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
A
AnchorCollect_p
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
hywang
AnchorCollect_p
Commits
aeea7b36
Commit
aeea7b36
authored
May 11, 2023
by
hywang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.增加日期判断,2020年以前禁止登录;
2.增加标签绑定功能
parent
2bbdab56
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
441 additions
and
31 deletions
+441
-31
build.gradle
app/build.gradle
+2
-2
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+5
-0
VMFactory.java
...rc/main/java/com/phlx/anchorcollect_p/data/VMFactory.java
+3
-0
DaoMaster.java
.../main/java/com/phlx/anchorcollect_p/db/gen/DaoMaster.java
+2
-2
RetrofitClient.java
...ain/java/com/phlx/anchorcollect_p/net/RetrofitClient.java
+4
-4
BindActivity.java
...n/java/com/phlx/anchorcollect_p/ui/bind/BindActivity.java
+48
-0
BindVM.java
...rc/main/java/com/phlx/anchorcollect_p/ui/bind/BindVM.java
+221
-0
BasicsCollectVM.java
.../phlx/anchorcollect_p/ui/fragment/vm/BasicsCollectVM.java
+15
-5
LoginActivity.java
...java/com/phlx/anchorcollect_p/ui/login/LoginActivity.java
+16
-0
LoginVM.java
.../main/java/com/phlx/anchorcollect_p/ui/login/LoginVM.java
+22
-12
DateUtils.java
...rc/main/java/com/phlx/anchorcollect_p/util/DateUtils.java
+14
-6
activity_bind.xml
app/src/main/res/layout/activity_bind.xml
+75
-0
layout_back_bar.xml
app/src/main/res/layout/layout_back_bar.xml
+14
-0
No files found.
app/build.gradle
View file @
aeea7b36
...
@@ -9,8 +9,8 @@ android {
...
@@ -9,8 +9,8 @@ android {
applicationId
"com.phlx.anchorcollect_p"
applicationId
"com.phlx.anchorcollect_p"
minSdkVersion
21
minSdkVersion
21
targetSdkVersion
29
targetSdkVersion
29
versionCode
6
versionCode
8
versionName
"
1.0.5
"
versionName
"
2.0.2
"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
...
...
app/src/main/AndroidManifest.xml
View file @
aeea7b36
...
@@ -87,6 +87,11 @@
...
@@ -87,6 +87,11 @@
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:launchMode=
"singleTask"
android:launchMode=
"singleTask"
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
<activity
android:name=
".ui.bind.BindActivity"
android:configChanges=
"keyboardHidden|orientation|screenSize"
android:launchMode=
"singleTask"
android:windowSoftInputMode=
"stateHidden|adjustResize"
/>
<service
<service
...
...
app/src/main/java/com/phlx/anchorcollect_p/data/VMFactory.java
View file @
aeea7b36
...
@@ -8,6 +8,7 @@ import androidx.annotation.VisibleForTesting;
...
@@ -8,6 +8,7 @@ import androidx.annotation.VisibleForTesting;
import
androidx.lifecycle.ViewModel
;
import
androidx.lifecycle.ViewModel
;
import
androidx.lifecycle.ViewModelProvider
;
import
androidx.lifecycle.ViewModelProvider
;
import
com.phlx.anchorcollect_p.ui.bind.BindVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.BasicsCollectVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.BasicsCollectVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.BreedingRecordVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.BreedingRecordVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.ImmunRecordVM
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.ImmunRecordVM
;
...
@@ -99,6 +100,8 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
...
@@ -99,6 +100,8 @@ public class VMFactory extends ViewModelProvider.NewInstanceFactory {
}
else
if
(
modelClass
.
isAssignableFrom
(
CattleVM
.
class
))
{
}
else
if
(
modelClass
.
isAssignableFrom
(
CattleVM
.
class
))
{
return
(
T
)
new
CattleVM
(
mApplication
,
repository
);
return
(
T
)
new
CattleVM
(
mApplication
,
repository
);
}
else
if
(
modelClass
.
isAssignableFrom
(
BindVM
.
class
))
{
return
(
T
)
new
BindVM
(
mApplication
,
repository
);
}
else
if
(
modelClass
.
isAssignableFrom
(
SettingVM
.
class
))
{
}
else
if
(
modelClass
.
isAssignableFrom
(
SettingVM
.
class
))
{
return
(
T
)
new
SettingVM
(
mApplication
,
repository
);
return
(
T
)
new
SettingVM
(
mApplication
,
repository
);
...
...
app/src/main/java/com/phlx/anchorcollect_p/db/gen/DaoMaster.java
View file @
aeea7b36
...
@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
...
@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/**
/**
* Master of DAO (schema version
1
): knows all DAOs.
* Master of DAO (schema version
3
): knows all DAOs.
*/
*/
public
class
DaoMaster
extends
AbstractDaoMaster
{
public
class
DaoMaster
extends
AbstractDaoMaster
{
public
static
final
int
SCHEMA_VERSION
=
1
;
public
static
final
int
SCHEMA_VERSION
=
3
;
/** Creates underlying database table using DAOs. */
/** Creates underlying database table using DAOs. */
public
static
void
createAllTables
(
Database
db
,
boolean
ifNotExists
)
{
public
static
void
createAllTables
(
Database
db
,
boolean
ifNotExists
)
{
...
...
app/src/main/java/com/phlx/anchorcollect_p/net/RetrofitClient.java
View file @
aeea7b36
...
@@ -49,15 +49,15 @@ public class RetrofitClient {
...
@@ -49,15 +49,15 @@ public class RetrofitClient {
private
static
final
int
CACHE_TIMEOUT
=
10
*
1024
*
1024
;
private
static
final
int
CACHE_TIMEOUT
=
10
*
1024
*
1024
;
//服务端根路径
//服务端根路径
public
static
String
baseUrl
=
public
static
String
baseUrl
=
//
"serve.xlglmnmyzspt.org.cn"//正式
"serve.xlglmnmyzspt.org.cn"
//正式
// "39.101.170.186"//阿里云测试
// "39.101.170.186"//阿里云测试
"192.168.8.135"
//董
//
"192.168.8.135"//董
// "192.168.43.154"//张敏
// "192.168.43.154"//张敏
;
;
public
static
String
port
=
public
static
String
port
=
//
""//正式
""
//正式
// "9000"//阿里云测试
// "9000"//阿里云测试
"9000"
//董
//
"9000"//董
;
;
private
static
Context
mContext
=
Utils
.
getContext
();
private
static
Context
mContext
=
Utils
.
getContext
();
...
...
app/src/main/java/com/phlx/anchorcollect_p/ui/bind/BindActivity.java
0 → 100644
View file @
aeea7b36
package
com
.
phlx
.
anchorcollect_p
.
ui
.
bind
;
import
android.os.Bundle
;
import
androidx.lifecycle.ViewModelProviders
;
import
com.phlx.anchorcollect_p.R
;
import
com.phlx.anchorcollect_p.data.VMFactory
;
import
com.phlx.anchorcollect_p.databinding.ActivityBindBinding
;
import
com.phlx.anchorcollect_p.ui.base.BaseActivity
;
import
com.phlx.anchorcollect_p.ui.fragment.vm.BasicsCollectVM
;
import
me.tatarka.bindingcollectionadapter2.BR
;
public
class
BindActivity
extends
BaseActivity
<
ActivityBindBinding
,
BindVM
>
{
@Override
public
int
initContentView
(
Bundle
savedInstanceState
)
{
return
R
.
layout
.
activity_bind
;
}
@Override
public
int
initVariableId
()
{
return
BR
.
viewModel
;
}
@Override
public
void
initParam
()
{
super
.
initParam
();
}
@Override
public
BindVM
initViewModel
()
{
VMFactory
factory
=
VMFactory
.
getInstance
(
getApplication
());
return
ViewModelProviders
.
of
(
this
,
factory
).
get
(
BindVM
.
class
);
}
@Override
public
void
initData
()
{
super
.
initData
();
viewModel
.
initToolbar
();
}
@Override
public
void
initViewObservable
()
{
super
.
initViewObservable
();
}
}
app/src/main/java/com/phlx/anchorcollect_p/ui/bind/BindVM.java
0 → 100644
View file @
aeea7b36
package
com
.
phlx
.
anchorcollect_p
.
ui
.
bind
;
import
android.annotation.SuppressLint
;
import
android.app.Application
;
import
android.media.AudioManager
;
import
android.media.SoundPool
;
import
android.os.Handler
;
import
android.os.Message
;
import
android.util.SparseIntArray
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
androidx.databinding.ObservableArrayList
;
import
androidx.databinding.ObservableField
;
import
com.phlx.anchorcollect_p.App
;
import
com.phlx.anchorcollect_p.Configs
;
import
com.phlx.anchorcollect_p.R
;
import
com.phlx.anchorcollect_p.data.Repository
;
import
com.phlx.anchorcollect_p.db.DbUtil
;
import
com.phlx.anchorcollect_p.db.gen.CattleResumeEntityDao
;
import
com.phlx.anchorcollect_p.db.interf.DbQueryCallBack
;
import
com.phlx.anchorcollect_p.entity.CattleResumeEntity
;
import
com.phlx.anchorcollect_p.ui.base.BackBarVM
;
import
com.phlx.anchorcollect_p.util.TextUtil
;
import
com.phlx.anchorcollect_p.widget.ItemData
;
import
com.uhf.structures.InventoryData
;
import
com.uhf.structures.OnInventoryListener
;
import
org.greenrobot.greendao.query.QueryBuilder
;
import
org.greenrobot.greendao.query.WhereCondition
;
import
java.util.ArrayList
;
import
java.util.List
;
import
cn.wandersnail.commons.util.ToastUtils
;
import
me.goldze.mvvmhabit.binding.command.BindingCommand
;
import
me.goldze.mvvmhabit.binding.command.BindingConsumer
;
import
me.goldze.mvvmhabit.binding.viewadapter.spinner.IKeyAndValue
;
import
me.goldze.mvvmhabit.utils.StringUtils
;
public
class
BindVM
extends
BackBarVM
<
Repository
>
implements
OnInventoryListener
{
public
ObservableArrayList
<
IKeyAndValue
>
tagItemData
;
private
List
<
CattleResumeEntity
>
cattleResumeEntityList
;
public
ObservableField
<
String
>
individualNo
=
new
ObservableField
<>(
""
);
public
ObservableField
<
String
>
registrationNo
=
new
ObservableField
<>(
""
);
private
SoundPool
soundPool
;
//盘点到标签时的提示音
private
SparseIntArray
musicId
;
private
boolean
isScan
=
false
;
//是否在扫描
private
String
tag
=
""
;
//扫描到的标记
private
CattleResumeEntity
entity
;
public
BindVM
(
@NonNull
Application
application
,
Repository
model
)
{
super
(
application
,
model
);
soundPool
=
new
SoundPool
(
2
,
AudioManager
.
STREAM_MUSIC
,
5
);
musicId
=
new
SparseIntArray
();
musicId
.
put
(
1
,
soundPool
.
load
(
getApplication
(),
R
.
raw
.
readcard
,
1
));
musicId
.
put
(
2
,
soundPool
.
load
(
getApplication
(),
R
.
raw
.
failure
,
1
));
}
@Override
public
void
onResume
()
{
super
.
onResume
();
isScan
=
false
;
tag
=
""
;
App
.
getInstance
().
getLinkage
().
setOnInventoryListener
(
this
);
}
//初始化ToolBar
public
void
initToolbar
()
{
setBackTitleText
(
"绑定耳标"
);
setSettingVisibleObservable
(
View
.
GONE
);
setBackRightTextVisible
(
View
.
VISIBLE
);
setBackRightText
(
getApplication
().
getResources
().
getString
(
R
.
string
.
save
));
initData
();
}
private
void
initData
()
{
tagItemData
=
new
ObservableArrayList
<>();
cattleResumeEntityList
=
new
ArrayList
<>();
queryTag
();
}
private
void
queryTag
()
{
tagItemData
.
clear
();
cattleResumeEntityList
.
clear
();
QueryBuilder
<
CattleResumeEntity
>
builder0
=
DbUtil
.
getInstance
().
getQueryBuilder
(
CattleResumeEntity
.
class
)
.
where
(
CattleResumeEntityDao
.
Properties
.
RegistrationNo
.
eq
(
""
));
DbUtil
.
getInstance
().
setDbQueryCallBack
(
new
DbQueryCallBack
<
CattleResumeEntity
>()
{
@Override
public
void
onSuccess
(
List
<
CattleResumeEntity
>
result
)
{
if
(
result
!=
null
&&
result
.
size
()
>
0
)
{
cattleResumeEntityList
.
addAll
(
result
);
for
(
CattleResumeEntity
cattleResumeEntity
:
result
)
{
tagItemData
.
add
(
new
ItemData
(
cattleResumeEntity
.
getIndividualNo
(),
cattleResumeEntity
.
getIndividualNo
()));
}
}
}
@Override
public
void
onFailed
()
{
ToastUtils
.
showShort
(
"查询基础数据数量失败!"
);
dismissDialog
();
}
}).
queryAsyncAll
(
CattleResumeEntity
.
class
,
builder0
);
}
public
BindingCommand
<
IKeyAndValue
>
onTagSelectorCommand
=
new
BindingCommand
<>(
new
BindingConsumer
<
IKeyAndValue
>()
{
@Override
public
void
call
(
IKeyAndValue
iKeyAndValue
)
{
individualNo
.
set
(
iKeyAndValue
.
getValue
());
}
});
public
BindingCommand
onRegistrationNoClick
=
new
BindingCommand
(()
->
startInventory
());
@Override
protected
void
backRightTextOnClick
()
{
super
.
backRightTextOnClick
();
if
(
StringUtils
.
isEmpty
(
individualNo
.
get
()))
{
ToastUtils
.
showShort
(
"请选择可视耳标"
);
return
;
}
if
(
StringUtils
.
isEmpty
(
registrationNo
.
get
()))
{
ToastUtils
.
showShort
(
"请扫描标签"
);
return
;
}
bindRfid
();
}
private
void
bindRfid
()
{
for
(
CattleResumeEntity
cattleResumeEntity
:
cattleResumeEntityList
)
{
if
(
cattleResumeEntity
.
getIndividualNo
().
equals
(
individualNo
.
get
()))
{
entity
=
cattleResumeEntity
;
entity
.
setRegistrationNo
(
registrationNo
.
get
());
entity
.
setUploadStatus
(
"0"
);
break
;
}
}
if
(
entity
!=
null
)
{
long
saveStatus
=
DbUtil
.
getInstance
().
insertOrReplace
(
entity
);
if
(
saveStatus
!=
-
1
)
{
ToastUtils
.
showShort
(
"耳标绑定成功!"
);
entity
=
null
;
individualNo
.
set
(
""
);
registrationNo
.
set
(
""
);
queryTag
();
}
else
{
ToastUtils
.
showShort
(
"耳标绑定失败!"
);
}
}
}
//开始盘点一次
public
void
startInventory
()
{
if
(!
isScan
)
{
App
.
getInstance
().
getLinkage
().
startInventory
(
1
,
0
);
tag
=
""
;
registrationNo
.
set
(
""
);
isScan
=
true
;
}
else
{
App
.
getInstance
().
getLinkage
().
stopInventory
();
isScan
=
false
;
}
}
@SuppressLint
(
"HandlerLeak"
)
private
Handler
handler
=
new
Handler
()
{
@Override
public
void
handleMessage
(
Message
msg
)
{
if
(
msg
.
what
==
0x333
)
{
InventoryData
inventoryData
=
(
InventoryData
)
msg
.
obj
;
if
(
inventoryData
.
getDataLength
()
>
0
&&
inventoryData
.
getEpcLength
()
>
0
)
{
String
epc
=
TextUtil
.
byteToHexString
(
inventoryData
.
getEPC_Data
(),
inventoryData
.
getEpcLength
());
String
tid
=
TextUtil
.
byteToHexString
(
inventoryData
.
getData
(),
inventoryData
.
getDataLength
());
soundPool
.
play
(
musicId
.
get
(
1
),
1
,
1
,
0
,
0
,
1
);
App
.
getInstance
().
getLinkage
().
stopInventory
();
if
(
""
.
equals
(
tag
))
checkEpc
(
epc
,
tid
);
}
}
}
};
private
void
checkEpc
(
String
epc
,
String
tid
)
{
tag
=
epc
+
tid
;
registrationNo
.
set
(
epc
);
isScan
=
false
;
}
@Override
public
void
getInventoryData
(
InventoryData
inventoryData
)
{
if
(
inventoryData
!=
null
)
{
Message
messenger
=
handler
.
obtainMessage
();
messenger
.
what
=
0x333
;
messenger
.
obj
=
inventoryData
;
handler
.
sendMessage
(
messenger
);
}
}
}
app/src/main/java/com/phlx/anchorcollect_p/ui/fragment/vm/BasicsCollectVM.java
View file @
aeea7b36
...
@@ -36,6 +36,7 @@ import com.phlx.anchorcollect_p.entity.PerformanceEntity;
...
@@ -36,6 +36,7 @@ import com.phlx.anchorcollect_p.entity.PerformanceEntity;
import
com.phlx.anchorcollect_p.entity.WeightManEntity
;
import
com.phlx.anchorcollect_p.entity.WeightManEntity
;
import
com.phlx.anchorcollect_p.event.EventMsg
;
import
com.phlx.anchorcollect_p.event.EventMsg
;
import
com.phlx.anchorcollect_p.event.EventTag
;
import
com.phlx.anchorcollect_p.event.EventTag
;
import
com.phlx.anchorcollect_p.ui.bind.BindActivity
;
import
com.phlx.anchorcollect_p.ui.fragment.list.CollectGridItem
;
import
com.phlx.anchorcollect_p.ui.fragment.list.CollectGridItem
;
import
com.phlx.anchorcollect_p.ui.setting.SettingActivity
;
import
com.phlx.anchorcollect_p.ui.setting.SettingActivity
;
import
com.phlx.anchorcollect_p.ui.setting.SyncActivity
;
import
com.phlx.anchorcollect_p.ui.setting.SyncActivity
;
...
@@ -283,11 +284,15 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
...
@@ -283,11 +284,15 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
public
BindingCommand
onSyncClick
=
new
BindingCommand
(
new
BindingAction
()
{
public
BindingCommand
onSyncClick
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
@Override
public
void
call
()
{
public
void
call
()
{
if
(!
Configs
.
isOnLine
)
{
// if (!Configs.isOnLine) {
ToastUtils
.
showShort
(
"请在联网模式下同步数据!"
);
//// ToastUtils.showShort("请在联网模式下同步数据!");
return
;
//// return;
//// }
if
(
Configs
.
isOnLine
)
{
startActivity
(
SyncActivity
.
class
);
}
else
{
startActivity
(
BindActivity
.
class
);
}
}
startActivity
(
SyncActivity
.
class
);
}
}
});
});
...
@@ -326,8 +331,13 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
...
@@ -326,8 +331,13 @@ public class BasicsCollectVM extends BaseViewModel<Repository> implements OnInve
public
void
click
(
int
id
)
{
public
void
click
(
int
id
)
{
if
(
StringUtils
.
isEmpty
(
rfid
.
get
()))
{
ToastUtils
.
showShort
(
"请扫描耳标"
);
return
;
}
if
(
StringUtils
.
isEmpty
(
tag
.
get
()))
{
if
(
StringUtils
.
isEmpty
(
tag
.
get
()))
{
ToastUtils
.
showShort
(
"请
扫描耳标或者输入耳标信息
"
);
ToastUtils
.
showShort
(
"请
输入可视耳标
"
);
return
;
return
;
}
}
...
...
app/src/main/java/com/phlx/anchorcollect_p/ui/login/LoginActivity.java
View file @
aeea7b36
...
@@ -104,6 +104,22 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginVM> {
...
@@ -104,6 +104,22 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding, LoginVM> {
}
}
}
}
});
});
viewModel
.
dateEvent
.
observe
(
this
,
new
Observer
<
Integer
>()
{
@Override
public
void
onChanged
(
Integer
integer
)
{
new
MaterialDialog
.
Builder
(
LoginActivity
.
this
).
canceledOnTouchOutside
(
false
).
title
(
"系统提示"
).
content
(
"日期错误,请联网自动获取日期"
).
positiveText
(
"退出"
).
onAny
(
new
MaterialDialog
.
SingleButtonCallback
()
{
@Override
public
void
onClick
(
@NonNull
MaterialDialog
dialog
,
@NonNull
DialogAction
which
)
{
if
(
which
==
DialogAction
.
POSITIVE
)
{
ModuleManager
.
destroyLibSO
();
finish
();
android
.
os
.
Process
.
killProcess
(
android
.
os
.
Process
.
myPid
());
}
}
}).
show
();
}
});
}
}
@Override
@Override
...
...
app/src/main/java/com/phlx/anchorcollect_p/ui/login/LoginVM.java
View file @
aeea7b36
...
@@ -26,6 +26,7 @@ import com.phlx.anchorcollect_p.params.BaseResponse;
...
@@ -26,6 +26,7 @@ import com.phlx.anchorcollect_p.params.BaseResponse;
import
com.phlx.anchorcollect_p.params.CollectResponse
;
import
com.phlx.anchorcollect_p.params.CollectResponse
;
import
com.phlx.anchorcollect_p.ui.main.MainActivity
;
import
com.phlx.anchorcollect_p.ui.main.MainActivity
;
import
com.phlx.anchorcollect_p.ui.splash.SplashActivity
;
import
com.phlx.anchorcollect_p.ui.splash.SplashActivity
;
import
com.phlx.anchorcollect_p.util.DateUtils
;
import
com.phlx.anchorcollect_p.util.StringUtil
;
import
com.phlx.anchorcollect_p.util.StringUtil
;
import
com.phlx.anchorcollect_p.util.TextUtil
;
import
com.phlx.anchorcollect_p.util.TextUtil
;
...
@@ -64,6 +65,9 @@ public class LoginVM extends BaseViewModel<Repository> {
...
@@ -64,6 +65,9 @@ public class LoginVM extends BaseViewModel<Repository> {
//更新app
//更新app
public
SingleLiveEvent
<
Integer
>
appUpdateEvent
=
new
SingleLiveEvent
<>();
public
SingleLiveEvent
<
Integer
>
appUpdateEvent
=
new
SingleLiveEvent
<>();
//手机时间问题,退出软件
public
SingleLiveEvent
<
Integer
>
dateEvent
=
new
SingleLiveEvent
<>();
public
int
loginType
;
//登录后是否跳转, 0跳转main 1不跳转
public
int
loginType
;
//登录后是否跳转, 0跳转main 1不跳转
...
@@ -83,20 +87,21 @@ public class LoginVM extends BaseViewModel<Repository> {
...
@@ -83,20 +87,21 @@ public class LoginVM extends BaseViewModel<Repository> {
//清除用户名的点击事件
//清除用户名的点击事件
public
BindingCommand
clearUserNameOnClickCommand
=
new
BindingCommand
(()
->
userName
.
set
(
""
));
public
BindingCommand
clearUserNameOnClickCommand
=
new
BindingCommand
(()
->
userName
.
set
(
""
));
//密码显示点击事件
//密码显示点击事件
public
BindingCommand
passwordShowSwitchOnClickCommand
=
public
BindingCommand
passwordShowSwitchOnClickCommand
=
new
BindingCommand
(()
->
{
new
BindingCommand
(()
->
{
pSwitchEvent
.
setValue
(
pSwitchEvent
.
getValue
()
==
null
||
!
pSwitchEvent
.
getValue
());
pSwitchEvent
.
setValue
(
pSwitchEvent
.
getValue
()
==
null
||
!
pSwitchEvent
.
getValue
()
);
}
);
});
//用户名输入框焦点改变的回调事件
//用户名输入框焦点改变的回调事件
public
BindingCommand
<
Boolean
>
onFocusChangeCommand
=
public
BindingCommand
<
Boolean
>
onFocusChangeCommand
=
new
BindingCommand
<>(
hasFocus
->
{
new
BindingCommand
<>(
hasFocus
->
{
if
(
hasFocus
)
{
if
(
hasFocus
)
{
clearBtnVisibility
.
set
(
View
.
VISIBLE
);
clearBtnVisibility
.
set
(
View
.
VISIBLE
);
}
else
{
}
else
{
clearBtnVisibility
.
set
(
View
.
INVISIBLE
);
clearBtnVisibility
.
set
(
View
.
INVISIBLE
);
}
}
});
});
//离线,联机
//离线,联机
public
BindingCommand
<
String
>
isOnlineCheckedChangeCommand
=
new
BindingCommand
<
String
>(
s
->
{
public
BindingCommand
<
String
>
isOnlineCheckedChangeCommand
=
new
BindingCommand
<
String
>(
s
->
{
if
(
s
.
equals
(
"离线"
))
{
if
(
s
.
equals
(
"离线"
))
{
...
@@ -105,10 +110,15 @@ public class LoginVM extends BaseViewModel<Repository> {
...
@@ -105,10 +110,15 @@ public class LoginVM extends BaseViewModel<Repository> {
Configs
.
isOnLine
=
true
;
Configs
.
isOnLine
=
true
;
}
}
});
});
//登录按钮的点击事件
//登录按钮的点击事件
public
BindingCommand
loginOnClickCommand
=
new
BindingCommand
(
new
BindingAction
()
{
public
BindingCommand
loginOnClickCommand
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
@Override
public
void
call
()
{
public
void
call
()
{
if
(
Integer
.
parseInt
(
DateUtils
.
getYear
())<
2020
){
dateEvent
.
call
();
return
;
}
if
(
Configs
.
isOnLine
)
{
if
(
Configs
.
isOnLine
)
{
login
();
login
();
}
else
{
}
else
{
...
...
app/src/main/java/com/phlx/anchorcollect_p/util/DateUtils.java
View file @
aeea7b36
package
com
.
phlx
.
anchorcollect_p
.
util
;
package
com
.
phlx
.
anchorcollect_p
.
util
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.Date
;
public
class
DateUtils
{
public
class
DateUtils
{
public
static
String
getYear
()
{
public
static
String
getYear
()
{
String
year
=
""
;
String
year
=
""
;
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy"
);
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy"
);
year
=
simpleDateFormat
.
format
(
new
Date
());
year
=
simpleDateFormat
.
format
(
new
Date
());
return
year
;
return
year
;
}
}
public
static
long
getYearLong
()
{
Calendar
c1
=
Calendar
.
getInstance
();
c1
.
set
(
Integer
.
parseInt
(
getYear
()),
0
,
1
,
0
,
0
,
0
);
return
c1
.
getTimeInMillis
();
}
}
}
app/src/main/res/layout/activity_bind.xml
0 → 100644
View file @
aeea7b36
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/tools"
xmlns:binding=
"http://schemas.android.com/apk/res-auto"
app:ignore=
"NamespaceTypo"
>
<data>
<import
type=
"me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers"
/>
<variable
name=
"viewModel"
type=
"com.phlx.anchorcollect_p.ui.bind.BindVM"
/>
<variable
name=
"spinnerAdapter"
type=
"android.widget.ArrayAdapter"
/>
<variable
name=
"adapter"
type=
"BindingRecyclerViewAdapter"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_bg"
android:padding=
"5dp"
>
<include
android:id=
"@+id/include"
layout=
"@layout/layout_back_bar"
binding:backBarVM=
"@{viewModel.backBarVM}"
/>
<TextView
android:id=
"@+id/tv_rfid_text"
android:layout_width=
"0dp"
android:layout_height=
"@dimen/dp_45"
android:background=
"@drawable/bg_radius_stroke_white_5"
android:gravity=
"center"
android:layout_margin=
"@dimen/dp_20"
android:hint=
"未扫到电子耳标"
android:text=
"@{viewModel.registrationNo}"
android:textColor=
"@color/black"
binding:layout_constraintLeft_toLeftOf=
"parent"
binding:layout_constraintRight_toRightOf=
"parent"
binding:layout_constraintTop_toBottomOf=
"@+id/include"
onClickCommand=
"@{viewModel.onRegistrationNoClick}"
/>
<Spinner
android:id=
"@+id/colony_house_no_sp"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_40"
android:layout_marginTop=
"@dimen/dp_5"
android:gravity=
"center_vertical"
android:minHeight=
"@dimen/dp_40"
android:layout_margin=
"@dimen/dp_20"
android:spinnerMode=
"dialog"
binding:valueReply=
"@{viewModel.individualNo}"
app:adapter=
"@{spinnerAdapter}"
binding:itemDatas=
"@{viewModel.tagItemData}"
binding:onItemSelectedCommand=
"@{viewModel.onTagSelectorCommand}"
binding:layout_constraintLeft_toLeftOf=
"parent"
binding:layout_constraintRight_toRightOf=
"parent"
binding:layout_constraintTop_toBottomOf=
"@+id/tv_rfid_text"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/layout_back_bar.xml
View file @
aeea7b36
...
@@ -44,6 +44,20 @@
...
@@ -44,6 +44,20 @@
binding:layout_constraintStart_toStartOf=
"parent"
binding:layout_constraintStart_toStartOf=
"parent"
binding:layout_constraintTop_toTopOf=
"parent"
/>
binding:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_right_text"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"?selectableItemBackground"
android:gravity=
"center"
android:padding=
"12dp"
android:text=
"@{backBarVM.backRightText}"
android:textColor=
"@color/white"
android:textSize=
"16sp"
android:visibility=
"@{backBarVM.backRightTextVisibleObservable}"
binding:layout_constraintRight_toRightOf=
"parent"
binding:layout_constraintBaseline_toBaselineOf=
"@+id/tv_title"
binding:onClickCommand=
"@{backBarVM.backRightTextOnClick}"
/>
<ImageView
<ImageView
android:id=
"@+id/iv_setting_icon"
android:id=
"@+id/iv_setting_icon"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment