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
40a1ba28
Commit
40a1ba28
authored
Apr 15, 2025
by
小费同学阿
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
基础搭建
功能开发 1:我的停车
parent
1d174b99
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
417 additions
and
0 deletions
+417
-0
AndroidManifest.xml
consumer/src/main/AndroidManifest.xml
+8
-0
ApiService.kt
.../src/main/java/com/xx/hbhconsumer/data/http/ApiService.kt
+7
-0
ParkRequest.java
...java/com/xx/hbhconsumer/data/http/requst/ParkRequest.java
+21
-0
MineViewModel.java
...c/main/java/com/xx/hbhconsumer/ui/mine/MineViewModel.java
+9
-0
MyParkActivity.java
.../main/java/com/xx/hbhconsumer/ui/park/MyParkActivity.java
+47
-0
MyParkAddActivity.java
...in/java/com/xx/hbhconsumer/ui/park/MyParkAddActivity.java
+70
-0
MyParkAddViewModel.java
...n/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
+22
-0
MyParkViewModel.java
...main/java/com/xx/hbhconsumer/ui/park/MyParkViewModel.java
+84
-0
activity_my_park_add.xml
consumer/src/main/res/layout/activity_my_park_add.xml
+56
-0
activity_my_park_center.xml
consumer/src/main/res/layout/activity_my_park_center.xml
+82
-0
fragment_mine.xml
consumer/src/main/res/layout/fragment_mine.xml
+9
-0
park_add_icon.png
consumer/src/main/res/mipmap-hdpi/park_add_icon.png
+0
-0
park_bg_right_icon.png
consumer/src/main/res/mipmap-hdpi/park_bg_right_icon.png
+0
-0
park_eleic_icon.png
consumer/src/main/res/mipmap-hdpi/park_eleic_icon.png
+0
-0
park_oil_icon.png
consumer/src/main/res/mipmap-hdpi/park_oil_icon.png
+0
-0
park_start_icon.png
consumer/src/main/res/mipmap-hdpi/park_start_icon.png
+0
-0
park_zanwu_icon.png
consumer/src/main/res/mipmap-hdpi/park_zanwu_icon.png
+0
-0
strings.xml
consumer/src/main/res/values/strings.xml
+2
-0
No files found.
consumer/src/main/AndroidManifest.xml
View file @
40a1ba28
...
...
@@ -42,6 +42,14 @@
</activity>
<!-- 我的停车-->
<activity
android:name=
".ui.park.MyParkActivity"
android:exported=
"true"
/>
<!-- 新增停车-->
<activity
android:name=
".ui.park.MyParkAddActivity"
android:exported=
"true"
/>
<!-- 商品分类-->
<activity
android:name=
".ui.pdf.PDFWebViewActivity"
...
...
consumer/src/main/java/com/xx/hbhconsumer/data/http/ApiService.kt
View file @
40a1ba28
...
...
@@ -193,6 +193,13 @@ interface ApiService {
@Query
(
"affiliatedCompany"
)
affiliatedCompany
:
String
):
Observable
<
BaseResponse
<
List
<
BoothBean
>>>
/**
* 获取车辆列表
*/
@Headers
(
"Content-type:application/json"
)
@GET
(
"app/carInfo/list"
)
open
fun
getParkList
():
Observable
<
BaseResponse
<
BoothBean
>>
/**
* 上传
*/
...
...
consumer/src/main/java/com/xx/hbhconsumer/data/http/requst/ParkRequest.java
0 → 100644
View file @
40a1ba28
package
com
.
xx
.
hbhconsumer
.
data
.
http
.
requst
;
import
com.xx.hbhconsumer.data.http.BaseRespons
;
import
com.xx.hbhconsumer.data.http.respons.BoothBean
;
import
com.xx.hbhconsumer.data.http.respons.CollectionBean
;
import
java.util.List
;
import
io.reactivex.rxjava3.core.Observable
;
import
me.goldze.mvvmhabit.http.ApiParams
;
import
me.goldze.mvvmhabit.http.BasePageResponse
;
import
me.goldze.mvvmhabit.http.BaseResponse
;
public
class
ParkRequest
extends
BaseRespons
{
/**
* 车辆信息列表
*/
public
Observable
<
BaseResponse
<
BoothBean
>>
getParkList
()
{
return
getApiService
().
getParkList
();
}
}
consumer/src/main/java/com/xx/hbhconsumer/ui/mine/MineViewModel.java
View file @
40a1ba28
...
...
@@ -26,6 +26,7 @@ import com.xx.hbhconsumer.ui.messagecenter.MessageCenterActivity;
import
com.xx.hbhconsumer.ui.mycollection.MyCollectionActivity
;
import
com.xx.hbhconsumer.ui.mycoupon.MyCouponActivity
;
import
com.xx.hbhconsumer.ui.order.OrderActivity
;
import
com.xx.hbhconsumer.ui.park.MyParkActivity
;
import
com.xx.hbhconsumer.ui.settings.SettingsActivity
;
import
java.io.File
;
...
...
@@ -427,6 +428,14 @@ public class MineViewModel extends BaseViewModel<MineRequest> {
startActivity
(
MessageCenterActivity
.
class
);
}
});
//跳转我的停车
public
BindingCommand
goMyPark
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
public
void
call
()
{
startActivity
(
MyParkActivity
.
class
);
}
});
//跳转我的收藏
...
...
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkActivity.java
0 → 100644
View file @
40a1ba28
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.View
;
import
com.xx.hbhconsumer.BR
;
import
com.xx.hbhconsumer.R
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.databinding.ActivityMessageCenterBinding
;
import
me.goldze.mvvmhabit.base.BaseActivity
;
import
me.goldze.mvvmhabit.binding.command.BindingAction
;
import
me.goldze.mvvmhabit.binding.command.BindingCommand
;
public
class
MyParkActivity
extends
BaseActivity
<
ActivityMessageCenterBinding
,
MyParkViewModel
>
{
@Override
public
int
initContentView
(
Bundle
savedInstanceState
)
{
return
R
.
layout
.
activity_my_park_center
;
}
@Override
public
void
initData
()
{
super
.
initData
();
}
@Override
public
int
initVariableId
()
{
return
BR
.
myParkViewModel
;
}
@Override
public
void
onPointerCaptureChanged
(
boolean
hasCapture
)
{
super
.
onPointerCaptureChanged
(
hasCapture
);
}
public
void
goBack
(
View
view
)
{
finish
();
}
@Override
public
MyParkViewModel
initViewModel
()
{
ParkRequest
parkRequest
=
new
ParkRequest
();
return
new
MyParkViewModel
(
getApplication
(),
parkRequest
);
}
}
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkAddActivity.java
0 → 100644
View file @
40a1ba28
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.os.Bundle
;
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.OnTabSelectedListener
;
import
com.xx.hbhconsumer.BR
;
import
com.xx.hbhconsumer.R
;
import
com.xx.hbhconsumer.data.http.requst.LoginRequest
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.databinding.ActivityMyParkAddBinding
;
import
me.goldze.mvvmhabit.base.BaseActivity
;
import
me.goldze.mvvmhabit.utils.ToastUtils
;
public
class
MyParkAddActivity
extends
BaseActivity
<
ActivityMyParkAddBinding
,
MyParkAddViewModel
>
{
final
String
[]
tabs
=
new
String
[]{
"普通车牌号"
,
"新能源车牌号"
};
TabLayout
tabLayout
;
@Override
public
int
initContentView
(
Bundle
savedInstanceState
)
{
return
R
.
layout
.
activity_my_park_add
;
}
@Override
public
void
initData
()
{
super
.
initData
();
// 初始化 TabLayout
tabLayout
=
findViewById
(
R
.
id
.
tabLayout
);
// 添加 Tab
for
(
String
tab
:
tabs
)
{
tabLayout
.
addTab
(
tabLayout
.
newTab
().
setText
(
tab
));
}
// 设置 Tab 选中监听器
tabLayout
.
addOnTabSelectedListener
(
new
OnTabSelectedListener
()
{
@Override
public
void
onTabSelected
(
TabLayout
.
Tab
tab
)
{
// 当 Tab 被选中时,通过 Toast 回显
Toast
.
makeText
(
MyParkAddActivity
.
this
,
"选中了:"
+
tab
.
getText
(),
Toast
.
LENGTH_SHORT
).
show
();
}
@Override
public
void
onTabUnselected
(
TabLayout
.
Tab
tab
)
{
// 当 Tab 未被选中时,不做处理
}
@Override
public
void
onTabReselected
(
TabLayout
.
Tab
tab
)
{
// 当 Tab 被重新选中时,不做处理
}
});
}
@Override
public
int
initVariableId
()
{
return
BR
.
myParkAddViewModel
;
}
@Override
public
MyParkAddViewModel
initViewModel
()
{
ParkRequest
parkRequest
=
new
ParkRequest
();
return
new
MyParkAddViewModel
(
getApplication
(),
parkRequest
);
}
}
\ No newline at end of file
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkAddViewModel.java
0 → 100644
View file @
40a1ba28
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.app.Application
;
import
androidx.annotation.NonNull
;
import
com.xx.hbhconsumer.data.http.requst.LoginRequest
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
me.goldze.mvvmhabit.base.BaseViewModel
;
public
class
MyParkAddViewModel
extends
BaseViewModel
<
ParkRequest
>
{
public
MyParkAddViewModel
(
@NonNull
Application
application
,
ParkRequest
model
)
{
super
(
application
,
model
);
}
}
consumer/src/main/java/com/xx/hbhconsumer/ui/park/MyParkViewModel.java
0 → 100644
View file @
40a1ba28
package
com
.
xx
.
hbhconsumer
.
ui
.
park
;
import
android.app.Application
;
import
android.util.Log
;
import
androidx.annotation.NonNull
;
import
com.xx.hbhconsumer.data.http.requst.LoginRequest
;
import
com.xx.hbhconsumer.data.http.requst.ParkRequest
;
import
com.xx.hbhconsumer.data.http.respons.CollectionBean
;
import
com.xx.hbhconsumer.ui.login.LoginActivity
;
import
com.xx.hbhconsumer.ui.mycollection.MyCollectionViewModel
;
import
java.util.List
;
import
io.reactivex.rxjava3.disposables.Disposable
;
import
io.reactivex.rxjava3.functions.Consumer
;
import
me.goldze.mvvmhabit.base.BaseViewModel
;
import
me.goldze.mvvmhabit.binding.command.BindingAction
;
import
me.goldze.mvvmhabit.binding.command.BindingCommand
;
import
me.goldze.mvvmhabit.http.ApiDisposablePageObserver
;
import
me.goldze.mvvmhabit.utils.RxUtils
;
public
class
MyParkViewModel
extends
BaseViewModel
<
ParkRequest
>
{
public
MyParkViewModel
(
@NonNull
Application
application
,
ParkRequest
model
)
{
super
(
application
,
model
);
}
@Override
public
void
onCreate
()
{
super
.
onCreate
();
loadData
();
}
private
void
loadData
()
{
model
.
getParkList
()
.
compose
(
RxUtils
.
schedulersTransformer
())
//线程调度
// .compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换, 这里可以换成自己的ExceptionHandle
.
doOnSubscribe
(
MyParkViewModel
.
this
)
.
doOnSubscribe
(
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
}
}).
subscribe
(
new
ApiDisposablePageObserver
<
CollectionBean
>()
{
@Override
public
void
onSuccess
(
List
<
CollectionBean
>
collectionBeanList
)
{
// collectionList.postValue(collectionBeanList);
Log
.
v
(
"查询的车辆列表"
,
collectionBeanList
.
toString
());
}
@Override
public
void
onError
(
String
Error
)
{
dismissDialog
();
}
@Override
public
void
getTotal
(
int
total
)
{
}
});
}
//返回按钮
public
BindingCommand
goBack
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
public
void
call
()
{
finish
();
}
});
//跳转新增停车页面
public
BindingCommand
goAddPark
=
new
BindingCommand
(
new
BindingAction
()
{
@Override
public
void
call
()
{
Log
.
v
(
"跳转新增停车页面"
,
""
);
startActivity
(
MyParkAddActivity
.
class
);
}
});
}
consumer/src/main/res/layout/activity_my_park_add.xml
0 → 100644
View file @
40a1ba28
<?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=
"myParkAddViewModel"
type=
"com.xx.hbhconsumer.ui.park.MyParkAddViewModel"
/>
</data>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<com.xx.xxviewlibrary.witget.XxBar
android:id=
"@+id/bar"
bar_title=
"@{@string/add_park}"
on_click=
"@{myParkAddViewModel.clickFinish}"
android:layout_width=
"match_parent"
android:layout_height=
"55dp"
app:layout_constraintTop_toTopOf=
"parent"
/>
<com.google.android.material.tabs.TabLayout
android:id=
"@+id/tabLayout"
android:layout_width=
"match_parent"
android:layout_height=
"40dp"
android:layout_below=
"@id/bar"
android:background=
"@color/white"
android:paddingBottom=
"7dp"
app:tabBackground=
"@null"
app:tabGravity=
"fill"
app:tabIndicatorColor=
"#5971A4"
app:tabIndicatorFullWidth=
"false"
app:tabIndicatorHeight=
"2dp"
app:tabMaxWidth=
"0dp"
app:tabMode=
"fixed"
app:tabPaddingBottom=
"4dp"
app:tabRippleColor=
"@null"
app:tabSelectedTextColor=
"#5971A4"
app:tabTextColor=
"@color/black"
>
</com.google.android.material.tabs.TabLayout>
<!--输入车牌号-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id=
"@+id/viewPager"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_below=
"@id/tabLayout"
>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</layout>
\ No newline at end of file
consumer/src/main/res/layout/activity_my_park_center.xml
0 → 100644
View file @
40a1ba28
<?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"
xmlns:binding=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"myParkViewModel"
type=
"com.xx.hbhconsumer.ui.park.MyParkViewModel"
/>
</data>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<RelativeLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/bar"
android:layout_width=
"match_parent"
android:layout_height=
"55dp"
android:background=
"@color/white"
>
<ImageButton
android:id=
"@+id/iv_bar_left"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:background=
"#00ffffff"
android:onClick=
"goBack"
android:padding=
"8dp"
android:src=
"@mipmap/ruzhu_icon_fanhui"
binding:onClickCommand=
"@{myParkViewModel.goBack}"
/>
<TextView
android:id=
"@+id/bar_title"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_centerHorizontal=
"true"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"50dp"
android:layout_marginRight=
"50dp"
android:ellipsize=
"end"
android:gravity=
"center"
android:singleLine=
"true"
android:text=
"@{@string/my_park}"
android:textColor=
"@color/black"
android:textSize=
"19sp"
android:textStyle=
"bold"
/>
<ImageButton
android:id=
"@+id/iv_bar_right"
android:layout_width=
"18dp"
android:layout_height=
"18dp"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"17dp"
android:src=
"@mipmap/park_add_icon"
android:visibility=
"visible"
binding:onClickCommand=
"@{myParkViewModel.goAddPark}"
/>
</RelativeLayout>
<!--停车列表展示,没有数据就显示暂无数据按钮-->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:layout_below=
"@id/bar"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/park_zanwu_icon"
android:visibility=
"visible"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
</layout>
\ No newline at end of file
consumer/src/main/res/layout/fragment_mine.xml
View file @
40a1ba28
...
...
@@ -50,6 +50,15 @@
android:layout_toLeftOf=
"@id/iv_setting"
android:src=
"@mipmap/wode_icon_xiaoxi1"
/>
<ImageView
android:id=
"@+id/iv_park"
onClickCommand=
"@{mineViewModel.goMyPark}"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginRight=
"30dp"
android:layout_toLeftOf=
"@id/iv_message"
android:src=
"@mipmap/park_start_icon"
/>
</RelativeLayout>
<!--今日卡片-->
...
...
consumer/src/main/res/mipmap-hdpi/park_add_icon.png
0 → 100644
View file @
40a1ba28
416 Bytes
consumer/src/main/res/mipmap-hdpi/park_bg_right_icon.png
0 → 100644
View file @
40a1ba28
5.81 KB
consumer/src/main/res/mipmap-hdpi/park_eleic_icon.png
0 → 100644
View file @
40a1ba28
1.57 KB
consumer/src/main/res/mipmap-hdpi/park_oil_icon.png
0 → 100644
View file @
40a1ba28
1.24 KB
consumer/src/main/res/mipmap-hdpi/park_start_icon.png
0 → 100644
View file @
40a1ba28
1.38 KB
consumer/src/main/res/mipmap-hdpi/park_zanwu_icon.png
0 → 100644
View file @
40a1ba28
25.1 KB
consumer/src/main/res/values/strings.xml
View file @
40a1ba28
...
...
@@ -110,6 +110,8 @@
<string
name=
"my_credit"
>
我的积分
</string>
<string
name=
"my_coupon"
>
我的优惠券
</string>
<string
name=
"message_center"
>
消息中心
</string>
<string
name=
"my_park"
>
我的停车
</string>
<string
name=
"add_park"
>
添加车牌号
</string>
<!--2-->
<string
name=
"change_password"
>
修改密码
</string>
<!--更换手机号-->
...
...
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