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
b170c1a7
Commit
b170c1a7
authored
Apr 17, 2025
by
小费同学阿
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基础搭建
功能开发 1:我的停车
parent
34249642
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
146 additions
and
16 deletions
+146
-16
ApiService.kt
.../src/main/java/com/xx/hbhconsumer/data/http/ApiService.kt
+9
-0
ParkRequest.kt
...n/java/com/xx/hbhconsumer/data/http/requst/ParkRequest.kt
+7
-0
ParkAdapter.java
...n/java/com/xx/hbhconsumer/dialog/adapter/ParkAdapter.java
+27
-1
MyParkActivity.java
.../main/java/com/xx/hbhconsumer/ui/park/MyParkActivity.java
+46
-5
MyParkAddViewModel.java
...n/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
+14
-8
MyParkViewModel.java
...main/java/com/xx/hbhconsumer/ui/park/MyParkViewModel.java
+27
-0
activity_my_park_center.xml
consumer/src/main/res/layout/activity_my_park_center.xml
+12
-0
item_park.xml
consumer/src/main/res/layout/item_park.xml
+4
-2
No files found.
consumer/src/main/java/com/xx/hbhconsumer/data/http/ApiService.kt
View file @
b170c1a7
...
...
@@ -77,6 +77,15 @@ interface ApiService {
@GET
(
"carInfo/list"
)
open
fun
getParkList
():
Observable
<
BaseResponse
<
List
<
ParkBean
>>>
/**
* 删除车辆信息
*/
@Headers
(
"Content-type:application/json"
)
@DELETE
(
"carInfo/deleteLogical/{businessId}"
)
open
fun
deletePark
(
@Path
(
"businessId"
)
id
:
String
):
Observable
<
BaseResponse
<
Boolean
>>
/**
* 提交停车信息
*/
...
...
consumer/src/main/java/com/xx/hbhconsumer/data/http/requst/ParkRequest.kt
View file @
b170c1a7
...
...
@@ -22,4 +22,11 @@ class ParkRequest: BaseRespons() {
{
return
apiService
.
postParkMsg
(
ApiParams
<
ParkMsgbody
>().
setParams
(
ParkMsgbody
(
plateNumber
,
type
.
toInt
())))
}
/**
* 删除停车信息
*/
fun
deletePark
(
businessId
:
String
):
Observable
<
BaseResponse
<
Boolean
>>
{
return
apiService
.
deletePark
(
businessId
);
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/dialog/adapter/ParkAdapter.java
View file @
b170c1a7
...
...
@@ -3,6 +3,7 @@ package com.xx.hbhconsumer.dialog.adapter;
import
android.content.Context
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.Toast
;
import
com.google.gson.Gson
;
import
com.xx.hbhconsumer.R
;
...
...
@@ -18,7 +19,19 @@ public class ParkAdapter extends xxBaseRecyclerViewAdapter<ItemParkBinding, Park
super
(
context
);
}
/*加载积分布局*/
// 定义长按事件的回调接口
public
interface
OnItemLongClickListener
{
void
onItemLongClick
(
View
view
,
int
position
,
ParkBean
parkBean
);
}
// 定义一个成员变量,用于存储回调接口的实例
private
OnItemLongClickListener
onItemLongClickListener
;
// 提供一个方法,用于设置回调接口的实例
public
void
setOnItemLongClickListener
(
OnItemLongClickListener
listener
)
{
this
.
onItemLongClickListener
=
listener
;
}
@Override
public
int
initLayout
()
{
return
R
.
layout
.
item_park
;
...
...
@@ -31,6 +44,19 @@ public class ParkAdapter extends xxBaseRecyclerViewAdapter<ItemParkBinding, Park
dataBind
.
setParkBean
(
data
);
Gson
gson
=
new
Gson
();
dataBind
.
itemLayout
.
setOnLongClickListener
(
new
View
.
OnLongClickListener
()
{
@Override
public
boolean
onLongClick
(
View
v
)
{
if
(
onItemLongClickListener
!=
null
)
{
// 如果有设置回调接口,则调用回调方法
onItemLongClickListener
.
onItemLongClick
(
v
,
position
,
data
);
}
// 处理长按事件
// Toast.makeText(v.getContext(), "长按事件触发,位置:" + position + ",车牌号:" + data.getPlateNumber(), Toast.LENGTH_SHORT).show();
// 返回 true 表示已处理长按事件
return
true
;
}
});
String
type
=
data
.
getType
();
// 先获取类型
if
(
type
!=
null
&&
!
type
.
isEmpty
())
{
// 先检查是否为 null,再检查是否为空字符串
...
...
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkActivity.java
View file @
b170c1a7
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
androidx.lifecycle.Observer
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
...
...
@@ -15,6 +19,9 @@ import com.xx.hbhconsumer.data.http.requst.ParkRequest;
import
com.xx.hbhconsumer.data.http.respons.ParkBean
;
import
com.xx.hbhconsumer.databinding.ActivityMessageCenterBinding
;
import
com.xx.hbhconsumer.dialog.adapter.ParkAdapter
;
import
com.xx.hbhconsumer.ui.login.LoginActivity
;
import
com.xx.xxviewlibrary.comm.CommTextDialog
;
import
com.xx.xxviewlibrary.comm.RefuseDialogBean
;
import
java.util.List
;
...
...
@@ -24,6 +31,8 @@ public class MyParkActivity extends BaseActivity<ActivityMessageCenterBinding, M
private
MyParkViewModel
myParkViewModel
;
private
RecyclerView
recyclerView
;
private
ImageView
zanwu_icon
;
private
TextView
zanwu_zi
;
private
String
deFlag
=
"0"
;
/*适配器*/
ParkAdapter
parkAdapter
;
...
...
@@ -35,15 +44,20 @@ public class MyParkActivity extends BaseActivity<ActivityMessageCenterBinding, M
@Override
protected
void
onResume
()
{
super
.
onResume
();
// 调用刷新数据的方法
myParkViewModel
.
refreshData
();
Log
.
v
(
"deFlags是啥"
,
deFlag
);
if
(
deFlag
.
equals
(
"1"
))
{
// 调用刷新数据的方法
myParkViewModel
.
refreshData
();
}
}
@Override
public
void
initData
()
{
super
.
initData
();
// 初始化 RecyclerView
recyclerView
=
findViewById
(
R
.
id
.
recycler_view
);
zanwu_icon
=
findViewById
(
R
.
id
.
zanwu_icon
);
zanwu_zi
=
findViewById
(
R
.
id
.
zanwu_zi
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
this
));
// 在 Activity/Fragment 中
...
...
@@ -54,17 +68,37 @@ public class MyParkActivity extends BaseActivity<ActivityMessageCenterBinding, M
@Override
public
void
onChanged
(
List
<
ParkBean
>
parkBeans
)
{
if
(
parkBeans
.
size
()
>
0
)
{
Log
.
v
(
"333333333333333"
,
String
.
valueOf
(
parkBeans
.
size
()));
// viewModel.parkAdapter.mList.addAll(parkBeans);
deFlag
=
"1"
;
recyclerView
.
setAdapter
(
viewModel
.
parkAdapter
);
zanwu_icon
.
setVisibility
(
View
.
GONE
);
zanwu_zi
.
setVisibility
(
View
.
GONE
);
}
else
{
zanwu_icon
.
setVisibility
(
View
.
VISIBLE
);
zanwu_zi
.
setVisibility
(
View
.
VISIBLE
);
}
}
});
// 设置长按事件的回调接口
viewModel
.
parkAdapter
.
setOnItemLongClickListener
(
new
ParkAdapter
.
OnItemLongClickListener
()
{
@Override
public
void
onItemLongClick
(
View
view
,
int
position
,
ParkBean
parkBean
)
{
// 去调删除接口
showCommTextDialog
(
new
RefuseDialogBean
(
"是否删除"
+
parkBean
.
getPlateNumber
()+
"该车牌号?"
,
"确定"
,
"取消"
),
new
CommTextDialog
.
onAcceptCallBack
()
{
@Override
public
void
acceptBack
()
{
viewModel
.
deletePark
(
parkBean
.
getBusinessId
());
}
@Override
public
void
refuseBack
()
{
}
});
}
});
}
@Override
...
...
@@ -82,4 +116,11 @@ public class MyParkActivity extends BaseActivity<ActivityMessageCenterBinding, M
public
void
goBack
(
View
view
)
{
finish
();
}
@Override
public
void
onPointerCaptureChanged
(
boolean
hasCapture
)
{
super
.
onPointerCaptureChanged
(
hasCapture
);
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
View file @
b170c1a7
...
...
@@ -38,12 +38,13 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
// 使用Pattern和Matcher进行校验
return
licensePlate
.
matches
(
regex
);
}
// 添加一个方法来接收拼接后的字符串
public
void
saveCombinedString
(
String
combinedString
,
String
type
)
{
if
(
combinedString
!=
null
)
{
public
void
saveCombinedString
(
String
combinedString
,
String
type
)
{
if
(
combinedString
!=
null
)
{
// 判断是否是新能源车牌号(假设新能源车牌以"D"或"F"结尾)
String
processedString
=
combinedString
;
if
(
type
.
equals
(
"1"
)
&&!
combinedString
.
isEmpty
()&&
combinedString
.
length
()==
7
)
{
if
(
type
.
equals
(
"1"
)
&&
!
combinedString
.
isEmpty
()
&&
combinedString
.
length
()
==
7
)
{
// 如果是普通车牌号,去掉最后一位
processedString
=
combinedString
.
substring
(
0
,
combinedString
.
length
()
-
1
);
// 打印提示信息
...
...
@@ -53,7 +54,8 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
// 如果不是合格的车牌号,提示用户
Toast
.
makeText
(
getApplication
().
getApplicationContext
(),
"车牌号格式不正确"
,
Toast
.
LENGTH_SHORT
).
show
();
return
;
// 退出方法,不继续执行后续逻辑
}
else
{
}
else
{
showDialog
();
model
.
postParkMsg
(
combinedString
,
type
)
.
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
...
...
@@ -65,8 +67,10 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
}).
subscribe
(
new
ApiDisposableObserver
<
Boolean
>()
{
@Override
public
void
onSuccess
(
Boolean
resultBean
)
{
dismissDialog
();
// 在这里处理拼接后的字符串
Toast
.
makeText
(
getApplication
().
getApplicationContext
(),
"添加车牌号成功"
,
Toast
.
LENGTH_SHORT
).
show
();
finish
();
}
@Override
...
...
@@ -76,7 +80,7 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
});
}
}
else
if
(
type
.
equals
(
"2"
)&&!
combinedString
.
isEmpty
()&&
combinedString
.
length
()==
8
)
{
}
else
if
(
type
.
equals
(
"2"
)
&&
!
combinedString
.
isEmpty
()
&&
combinedString
.
length
()
==
8
)
{
// 打印提示信息
// Toast.makeText(getApplication().getApplicationContext(), "新能源车牌号处理后:" + processedString, Toast.LENGTH_SHORT).show();
// 校验combinedString是否是合格的车牌号
...
...
@@ -84,8 +88,8 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
// 如果不是合格的车牌号,提示用户
Toast
.
makeText
(
getApplication
().
getApplicationContext
(),
"车牌号格式不正确"
,
Toast
.
LENGTH_SHORT
).
show
();
return
;
// 退出方法,不继续执行后续逻辑
}
else
{
}
else
{
showDialog
();
model
.
postParkMsg
(
combinedString
,
type
)
.
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
.
doOnSubscribe
(
MyParkAddViewModel
.
this
)
...
...
@@ -96,8 +100,10 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
}).
subscribe
(
new
ApiDisposableObserver
<
Boolean
>()
{
@Override
public
void
onSuccess
(
Boolean
resultBean
)
{
dismissDialog
();
// 在这里处理拼接后的字符串
Toast
.
makeText
(
getApplication
().
getApplicationContext
(),
"添加车牌号成功"
,
Toast
.
LENGTH_SHORT
).
show
();
finish
();
}
@Override
...
...
@@ -107,7 +113,7 @@ public class MyParkAddViewModel extends BaseViewModel<ParkRequest> {
});
}
}
else
{
}
else
{
// 打印提示信息
Toast
.
makeText
(
getApplication
().
getApplicationContext
(),
"请输入完整车牌号"
,
Toast
.
LENGTH_SHORT
).
show
();
...
...
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkViewModel.java
View file @
b170c1a7
...
...
@@ -3,6 +3,7 @@ package com.xx.hbhconsumer.ui.park;
import
android.app.Application
;
import
android.util.Log
;
import
android.view.View
;
import
androidx.annotation.NonNull
;
import
androidx.lifecycle.MutableLiveData
;
...
...
@@ -25,6 +26,8 @@ import me.goldze.mvvmhabit.binding.command.BindingCommand;
import
me.goldze.mvvmhabit.http.ApiDisposableObserver
;
import
me.goldze.mvvmhabit.http.ApiDisposablePageObserver
;
import
me.goldze.mvvmhabit.utils.RxUtils
;
import
me.goldze.mvvmhabit.utils.StringUtils
;
import
me.goldze.mvvmhabit.utils.ToastUtils
;
public
class
MyParkViewModel
extends
BaseViewModel
<
ParkRequest
>
{
/*适配器*/
...
...
@@ -47,6 +50,7 @@ public class MyParkViewModel extends BaseViewModel<ParkRequest> {
loadData
();
// 调用加载数据的方法
}
private
void
loadData
()
{
showDialog
();
model
.
getParkList
()
.
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
...
...
@@ -59,6 +63,7 @@ public class MyParkViewModel extends BaseViewModel<ParkRequest> {
@Override
public
void
onSuccess
(
List
<
ParkBean
>
resultBean
)
{
dismissDialog
();
parkAdapter
.
mList
=
resultBean
;
parkBeanList
.
setValue
(
resultBean
);
}
...
...
@@ -71,7 +76,29 @@ public class MyParkViewModel extends BaseViewModel<ParkRequest> {
});
}
public
void
deletePark
(
String
businessId
)
{
showDialog
();
model
.
deletePark
(
businessId
)
.
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
.
doOnSubscribe
(
MyParkViewModel
.
this
)
.
doOnSubscribe
(
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
}
}).
subscribe
(
new
ApiDisposableObserver
<
Boolean
>()
{
@Override
public
void
onSuccess
(
Boolean
resultBean
)
{
ToastUtils
.
showShort
(
"删除成功"
);
dismissDialog
();
refreshData
();
}
@Override
public
void
onError
(
String
Error
)
{
dismissDialog
();
}
});
}
//返回按钮
public
BindingCommand
goBack
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
...
...
consumer/src/main/res/layout/activity_my_park_center.xml
View file @
b170c1a7
...
...
@@ -81,6 +81,18 @@
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/zanwu_zi"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"暂无车辆数据"
android:layout_marginTop=
"3dp"
android:textColor=
"#D1CECE"
android:textStyle=
"bold"
app:layout_constraintTop_toBottomOf=
"@+id/zanwu_icon"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
...
...
consumer/src/main/res/layout/item_park.xml
View file @
b170c1a7
...
...
@@ -12,6 +12,7 @@
<RelativeLayout
android:id=
"@+id/item_layout"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"4dp"
...
...
@@ -107,9 +108,10 @@
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"
¥
"
android:text=
"
元
"
android:textColor=
"#fdc362"
android:textSize=
"10sp"
android:textSize=
"16sp"
android:layout_marginLeft=
"2dp"
android:textStyle=
"bold"
/>
</LinearLayout>
</LinearLayout>
...
...
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