Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
HBHAndroid
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨秀秀
HBHAndroid
Commits
8b803775
Commit
8b803775
authored
Apr 16, 2025
by
小费同学阿
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基础搭建
功能开发 1:我的停车
parent
2e38cc75
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
310 additions
and
15 deletions
+310
-15
MyParkBean.kt
...n/java/com/xx/hbhconsumer/data/http/respons/MyParkBean.kt
+16
-0
MyParkDialog.kt
...r/src/main/java/com/xx/hbhconsumer/dialog/MyParkDialog.kt
+39
-0
MyParkListAdapter.kt
...va/com/xx/hbhconsumer/dialog/adapter/MyParkListAdapter.kt
+53
-0
MyParkAddActivity.java
...in/java/com/xx/hbhconsumer/ui/park/MyParkAddActivity.java
+78
-13
MyParkAddViewModel.java
...n/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
+10
-0
activity_my_park_add.xml
consumer/src/main/res/layout/activity_my_park_add.xml
+1
-2
dialog_my_park_number_list.xml
consumer/src/main/res/layout/dialog_my_park_number_list.xml
+71
-0
item_dialog_type.xml
consumer/src/main/res/layout/item_dialog_type.xml
+42
-0
No files found.
consumer/src/main/java/com/xx/hbhconsumer/data/http/respons/MyParkBean.kt
0 → 100644
View file @
8b803775
package
com.xx.hbhconsumer.data.http.respons
import
com.xx.hbhconsumer.dialog.data.TextListProvider
class
MyParkBean
(
var
id
:
Int
,
var
label
:
String
,
)
:
TextListProvider
{
override
fun
providerText
():
String
{
return
label
}
override
fun
ProviderId
():
String
{
return
id
.
toString
()
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/dialog/MyParkDialog.kt
0 → 100644
View file @
8b803775
package
com.xx.hbhconsumer.dialog
import
android.content.Context
import
android.view.Gravity
import
android.view.View
import
android.view.WindowManager
import
com.xx.hbhconsumer.R
import
com.xx.hbhconsumer.databinding.DialogMyParkNumberListBinding
import
com.xx.hbhconsumer.dialog.adapter.MyParkListAdapter
import
com.xx.hbhconsumer.dialog.data.TextListProvider
import
com.xx.xxviewlibrary.base.xxBaseDialog
import
me.jessyan.autosize.utils.AutoSizeUtils
class
MyParkDialog
(
context
:
Context
,
val
list
:
List
<
TextListProvider
>):
xxBaseDialog
<
DialogMyParkNumberListBinding
>(
context
){
lateinit
var
adpter
:
MyParkListAdapter
;
override
fun
InitView
():
DialogSet
{
return
DialogSet
(
R
.
layout
.
dialog_my_park_number_list
,
true
,
Gravity
.
BOTTOM
,
true
,
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
AutoSizeUtils
.
dp2px
(
context
,
321.0F
));
}
override
fun
InitData
()
{
binding
.
dialog
=
this
;
adpter
=
MyParkListAdapter
(
context
);
adpter
.
mList
=
list
binding
.
rvDblList
.
adapter
=
adpter
;
}
fun
typeClickDialog
(
view
:
View
)
{
if
(
DialogClickListener
!=
null
)
{
DialogClickListener
.
dialogClickBack
(
view
.
id
,
adpter
.
getBuuthBusinessId
())
}
dismiss
()
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/dialog/adapter/MyParkListAdapter.kt
0 → 100644
View file @
8b803775
package
com.xx.hbhconsumer.dialog.adapter
import
android.content.Context
import
android.view.View
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.xx.hbhconsumer.R
import
com.xx.hbhconsumer.databinding.ItemDialogBoothBinding
import
com.xx.hbhconsumer.databinding.ItemDialogTypeBinding
import
com.xx.hbhconsumer.dialog.data.TextListProvider
import
com.xx.xxviewlibrary.base.xxBaseRecyclerViewAdapter
class
MyParkListAdapter
(
context
:
Context
?)
:
xxBaseRecyclerViewAdapter
<
ItemDialogBoothBinding
,
TextListProvider
>(
context
),
xxBaseRecyclerViewAdapter
.
OnItemClick
<
TextListProvider
>
{
var
booth
:
TextListProvider
?
=
null
init
{
itemClick
=
this
;
}
override
fun
initLayout
():
Int
{
return
R
.
layout
.
item_dialog_booth
}
override
fun
covert
(
dataBind
:
ItemDialogBoothBinding
?,
data
:
TextListProvider
?,
position
:
Int
)
{
dataBind
?.
textprovider
=
data
;
LinearLayoutManager
.
VERTICAL
if
(
data
?.
ProviderId
()
?.
equals
(
booth
?.
ProviderId
())
==
true
)
{
dataBind
?.
tvIdbNo
?.
setTextColor
(
mContext
.
getColor
(
R
.
color
.
foreground
))
dataBind
?.
ivIdbSelect
?.
visibility
=
View
.
VISIBLE
}
else
{
dataBind
?.
tvIdbNo
?.
setTextColor
(
mContext
.
getColor
(
R
.
color
.
black
))
dataBind
?.
ivIdbSelect
?.
visibility
=
View
.
GONE
}
}
fun
getBuuthBusinessId
():
TextListProvider
?
{
return
booth
}
override
fun
itemClickCalBack
(
position
:
Int
,
data
:
TextListProvider
?)
{
if
(
data
!=
null
)
{
booth
=
data
}
notifyDataSetChanged
()
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkAddActivity.java
View file @
8b803775
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.content.Context
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.Editable
;
import
android.text.TextWatcher
;
import
android.text.TextWatcher
;
import
android.view.View
;
import
android.view.View
;
import
android.view.inputmethod.InputMethodManager
;
import
android.widget.EditText
;
import
android.widget.EditText
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.constraintlayout.widget.ConstraintLayout
;
import
com.google.android.material.tabs.TabLayout
;
import
com.google.android.material.tabs.TabLayout
;
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
;
import
com.google.android.material.tabs.TabLayout.OnTabSelectedListener
;
import
com.xx.hbhconsumer.BR
;
import
com.xx.hbhconsumer.BR
;
import
com.xx.hbhconsumer.R
;
import
com.xx.hbhconsumer.R
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.data.http.respons.BoothBean
;
import
com.xx.hbhconsumer.data.http.respons.MyParkBean
;
import
com.xx.hbhconsumer.databinding.ActivityMyParkAddBinding
;
import
com.xx.hbhconsumer.databinding.ActivityMyParkAddBinding
;
import
com.xx.hbhconsumer.dialog.BoothListDialog
;
import
com.xx.hbhconsumer.dialog.MyParkDialog
;
import
com.xx.hbhconsumer.dialog.data.TextListProvider
;
import
com.xx.xxviewlibrary.base.xxBaseDialog
;
import
java.util.ArrayList
;
import
java.util.List
;
import
me.goldze.mvvmhabit.base.BaseActivity
;
import
me.goldze.mvvmhabit.base.BaseActivity
;
import
me.goldze.mvvmhabit.utils.ToastUtils
;
public
class
MyParkAddActivity
extends
BaseActivity
<
ActivityMyParkAddBinding
,
MyParkAddViewModel
>
{
public
class
MyParkAddActivity
extends
BaseActivity
<
ActivityMyParkAddBinding
,
MyParkAddViewModel
>
{
final
String
[]
tabs
=
new
String
[]{
"普通车牌号"
,
"新能源车牌号"
};
final
String
[]
tabs
=
new
String
[]{
"普通车牌号"
,
"新能源车牌号"
};
TabLayout
tabLayout
;
TabLayout
tabLayout
;
private
String
selectDept
=
""
;
private
List
<
TextListProvider
>
deptList
=
new
ArrayList
<>();
@Override
@Override
public
int
initContentView
(
Bundle
savedInstanceState
)
{
public
int
initContentView
(
Bundle
savedInstanceState
)
{
return
R
.
layout
.
activity_my_park_add
;
return
R
.
layout
.
activity_my_park_add
;
}
}
@Override
public
int
initVariableId
()
{
return
BR
.
myParkAddViewModel
;
}
@Override
@Override
public
void
initData
()
{
public
void
initData
()
{
super
.
initData
();
super
.
initData
();
...
@@ -99,6 +110,67 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
...
@@ -99,6 +110,67 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
}
}
}
}
});
});
// 为每个输入框设置点击事件监听器
editText
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
String
[]
licensePrefixes
=
{
"京"
,
"津"
,
"沪"
,
"渝"
,
"冀"
,
"豫"
,
"云"
,
"辽"
,
"黑"
,
"湘"
,
"皖"
,
"鲁"
,
"新"
,
"苏"
,
"浙"
,
"赣"
,
"鄂"
,
"桂"
,
"琼"
,
"陕"
,
"甘"
,
"晋"
,
"蒙"
,
"吉"
,
"闽"
,
"贵"
,
"粤"
,
"青"
,
"藏"
,
"宁"
};
String
[]
licensePrefixesNumber
=
{
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"J"
,
"K"
,
// 注意跳过了"I"
"L"
,
"M"
,
"N"
,
"O"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
,
"0"
,
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
};
// 清空 deptList
deptList
.
clear
();
if
(
index
==
0
)
{
// 第一个输入框使用 licensePrefixes
for
(
int
i
=
0
;
i
<
licensePrefixes
.
length
;
i
++)
{
deptList
.
add
(
new
MyParkBean
(
i
+
1
,
licensePrefixes
[
i
]));
}
}
else
{
// 其他输入框使用 licensePrefixesNumber
for
(
int
i
=
0
;
i
<
licensePrefixesNumber
.
length
;
i
++)
{
deptList
.
add
(
new
MyParkBean
(
i
+
1
,
licensePrefixesNumber
[
i
]));
}
}
MyParkDialog
dialog
=
new
MyParkDialog
(
v
.
getContext
(),
deptList
);
dialog
.
setDialogClickListener
(
new
xxBaseDialog
.
onDialogClickListener
<
TextListProvider
>()
{
@Override
public
void
dialogClickBack
(
int
code
,
TextListProvider
data
)
{
// 获取标记的输入框
EditText
targetEditText
=
(
EditText
)
v
.
getTag
();
if
(
targetEditText
!=
null
)
{
targetEditText
.
setText
(
data
.
providerText
());
// 将选择的内容赋值给对应的输入框
}
}
});
dialog
.
show
();
// 设置当前点击的输入框标记
v
.
setTag
(
editText
);
// 阻止输入框获取焦点
editText
.
clearFocus
();
// 隐藏键盘
InputMethodManager
imm
=
(
InputMethodManager
)
getSystemService
(
Context
.
INPUT_METHOD_SERVICE
);
if
(
imm
!=
null
)
{
imm
.
hideSoftInputFromWindow
(
v
.
getWindowToken
(),
0
);
}
}
});
// 设置输入框不可编辑
editText
.
setFocusable
(
false
);
editText
.
setClickable
(
true
);
}
}
// 添加 Tab
// 添加 Tab
...
@@ -110,8 +182,6 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
...
@@ -110,8 +182,6 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
tabLayout
.
addOnTabSelectedListener
(
new
OnTabSelectedListener
()
{
tabLayout
.
addOnTabSelectedListener
(
new
OnTabSelectedListener
()
{
@Override
@Override
public
void
onTabSelected
(
TabLayout
.
Tab
tab
)
{
public
void
onTabSelected
(
TabLayout
.
Tab
tab
)
{
// 当 Tab 被选中时,通过 Toast 回显
Toast
.
makeText
(
MyParkAddActivity
.
this
,
"选中了:"
+
tab
.
getText
(),
Toast
.
LENGTH_SHORT
).
show
();
// 看选择哪个校验不一样
// 看选择哪个校验不一样
}
}
...
@@ -142,11 +212,6 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
...
@@ -142,11 +212,6 @@ public class MyParkAddActivity extends BaseActivity<ActivityMyParkAddBinding, My
});
});
}
}
@Override
public
int
initVariableId
()
{
return
BR
.
myParkAddViewModel
;
}
@Override
@Override
public
MyParkAddViewModel
initViewModel
()
{
public
MyParkAddViewModel
initViewModel
()
{
ParkRequest
parkRequest
=
new
ParkRequest
();
ParkRequest
parkRequest
=
new
ParkRequest
();
...
...
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
View file @
8b803775
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.app.Application
;
import
android.app.Application
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.Toast
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.NonNull
;
...
@@ -8,6 +11,13 @@ import androidx.databinding.ObservableField;
...
@@ -8,6 +11,13 @@ import androidx.databinding.ObservableField;
import
androidx.lifecycle.MutableLiveData
;
import
androidx.lifecycle.MutableLiveData
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.data.http.respons.MyParkBean
;
import
com.xx.hbhconsumer.dialog.MyParkDialog
;
import
com.xx.hbhconsumer.dialog.data.TextListProvider
;
import
com.xx.xxviewlibrary.base.xxBaseDialog
;
import
java.util.ArrayList
;
import
java.util.List
;
import
me.goldze.mvvmhabit.base.BaseViewModel
;
import
me.goldze.mvvmhabit.base.BaseViewModel
;
import
me.goldze.mvvmhabit.binding.command.BindingAction
;
import
me.goldze.mvvmhabit.binding.command.BindingAction
;
...
...
consumer/src/main/res/layout/activity_my_park_add.xml
View file @
8b803775
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:binding=
"http://schemas.android.com/apk/res-auto"
xmlns:binding=
"http://schemas.android.com/apk/res-auto"
>
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<data>
...
...
consumer/src/main/res/layout/dialog_my_park_number_list.xml
0 → 100644
View file @
8b803775
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:background=
"@drawable/bg_white_top_radius_20"
xmlns:binding=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"dialog"
type=
"com.xx.hbhconsumer.dialog.MyParkDialog"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers"
/>
<import
type=
"me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:padding=
"17dp"
android:layout_height=
"321dp"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"选择简称"
android:textSize=
"16sp"
android:textColor=
"#333333"
android:id=
"@+id/tv_dialog_title"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
/>
<!-- LayoutManagers.linear(1,false) 竖向-->
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_dbl_list"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"16dp"
android:layout_marginBottom=
"16dp"
binding:layoutManager=
"@{LayoutManagers.linear(1,false)}"
app:layout_constraintBottom_toTopOf=
"@+id/btn_bdl_cancel"
app:layout_constraintTop_toBottomOf=
"@+id/tv_dialog_title"
/>
<Button
android:layout_width=
"165dp"
android:layout_height=
"45dp"
android:text=
"取消"
android:background=
"@drawable/bg_side_blue_1_radius_20"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
android:onClick=
"@{()->dialog.dismiss()}"
android:textColor=
"@color/foreground"
android:id=
"@+id/btn_bdl_cancel"
/>
<Button
android:layout_width=
"165dp"
android:layout_height=
"45dp"
android:text=
"确定"
android:textColor=
"@color/white"
android:background=
"@drawable/bg_foregrount_radius_20"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
android:onClick=
"@{dialog.typeClickDialog}"
android:id=
"@+id/btn_bdl_confirm"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
consumer/src/main/res/layout/item_dialog_type.xml
0 → 100644
View file @
8b803775
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<data>
<variable
name=
"textprovider"
type=
"com.xx.hbhconsumer.dialog.data.TextListProvider"
/>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"44dp"
>
<TextView
android:id=
"@+id/tv_idb_no"
android:gravity=
"center_vertical"
android:layout_height=
"44dp"
android:layout_width=
"match_parent"
android:textSize=
"16dp"
android:textColor=
"@color/black"
android:singleLine=
"true"
android:ellipsize=
"end"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
android:text=
"@{textprovider.providerText()}"
/>
<ImageView
android:layout_width=
"18dp"
android:layout_height=
"18dp"
android:id=
"@+id/iv_idb_select"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
android:visibility=
"gone"
app:layout_constraintRight_toRightOf=
"parent"
android:src=
"@mipmap/ic_list_select"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
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