Commit 8b803775 authored by 小费同学阿's avatar 小费同学阿 💬

基础搭建

功能开发
1:我的停车
parent 2e38cc75
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
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
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
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();
......
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;
......
<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>
......
<?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>
<?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>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment