Commit 1441e432 authored by 罗小雨's avatar 罗小雨
Browse files

完善车辆选择弹窗

parent c47f24d6
...@@ -2,6 +2,7 @@ package com.sd.cavphmi.ui ...@@ -2,6 +2,7 @@ package com.sd.cavphmi.ui
import android.view.KeyEvent import android.view.KeyEvent
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.Toast
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.sd.cavphmi.BR import com.sd.cavphmi.BR
...@@ -12,7 +13,7 @@ import com.sd.cavphmi.databinding.ActivityMainBinding ...@@ -12,7 +13,7 @@ import com.sd.cavphmi.databinding.ActivityMainBinding
import com.sd.cavphmi.intfaces.OnConCan import com.sd.cavphmi.intfaces.OnConCan
import com.sd.cavphmi.ui.fragment.CarPanelFragment import com.sd.cavphmi.ui.fragment.CarPanelFragment
import com.sd.cavphmi.ui.fragment.ExoPlayFragment import com.sd.cavphmi.ui.fragment.ExoPlayFragment
import com.sd.cavphmi.ui.view.CustomDialog import com.sd.cavphmi.ui.view.CustomListDialog
import com.sd.cavphmi.utils.DisplayUtil import com.sd.cavphmi.utils.DisplayUtil
import com.sd.cavphmi.viewmodels.MainVm import com.sd.cavphmi.viewmodels.MainVm
import com.sd.cavphmi.viewmodels.MockVM import com.sd.cavphmi.viewmodels.MockVM
...@@ -25,7 +26,8 @@ import dagger.hilt.android.AndroidEntryPoint ...@@ -25,7 +26,8 @@ import dagger.hilt.android.AndroidEntryPoint
* @constructor Create empty Main activity * @constructor Create empty Main activity
*/ */
@AndroidEntryPoint @AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>(),
CustomListDialog.OnItemClickListener {
override fun getStatuBarColor(): Int { override fun getStatuBarColor(): Int {
return -1 return -1
...@@ -108,9 +110,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { ...@@ -108,9 +110,9 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
} }
//模拟选择车辆 //模拟选择车辆
binding.btSetcar.setOnClickListener{ binding.btSetcar.setOnClickListener{
val dialog=CustomDialog(this)
var list= listOf("skywell.1ggvlp16.car10","skywell.1ggvlp16.car8") var list= listOf("skywell.1ggvlp16.car10","skywell.1ggvlp16.car8")
dialog.setData(list) val dialog = CustomListDialog(this, "选择车辆", list)
dialog.setOnItemClickListener(this)
dialog.show() dialog.show()
} }
} }
...@@ -190,6 +192,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { ...@@ -190,6 +192,10 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
return super.dispatchKeyEvent(event) return super.dispatchKeyEvent(event)
} }
} }
override fun onItemClick(position: Int, selectedItem: String) {
Toast.makeText(this, "点击了第${position + 1}项: $selectedItem", Toast.LENGTH_SHORT).show()
}
} }
/* https://docs.qq.com/sheet/DVWdOYXZXdVVrQWts?tab=xxmysv socket文档 /* https://docs.qq.com/sheet/DVWdOYXZXdVVrQWts?tab=xxmysv socket文档
......
package com.sd.cavphmi.ui.view
import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import android.view.Window
import android.view.WindowManager
import android.widget.LinearLayout
import android.widget.TextView
import com.sd.cavphmi.R
class CustomDialog(context: Context) : Dialog(context) {
lateinit var list:List<String>
init {
requestWindowFeature(Window.FEATURE_NO_TITLE)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) // 设置窗口背景透明[6](@ref)
setContentView(R.layout.dialog_custom)
setCancelable(false)
setCanceledOnTouchOutside(false)
window?.setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
val btnCancel = findViewById<TextView>(R.id.tv_cancle)
val llCar = findViewById<LinearLayout>(R.id.ll_car)
for(item in list){
var carView=LayoutInflater.from(context).inflate(R.layout.item_car,null)
val tv_car=carView.findViewById<TextView>(R.id.tv_car)
tv_car.setOnClickListener{
dismiss()
}
llCar.addView(carView)
}
btnCancel.setOnClickListener { dismiss() } // 点击取消按钮关闭对话框
}
fun setData(data:List<String>){
this.list=data
}
}
\ No newline at end of file
package com.sd.cavphmi.ui.view
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.sd.cavphmi.R
class CustomListDialog(
context: Context,
private val title: String,
private val dataList: List<String>
) : Dialog(context) {
interface OnItemClickListener {
fun onItemClick(position: Int, selectedItem: String)
}
private var itemClickListener: OnItemClickListener? = null
// 3. 设置监听器的方法
fun setOnItemClickListener(listener: OnItemClickListener) {
this.itemClickListener = listener
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.dialog_custom)
window?.setBackgroundDrawableResource(android.R.color.transparent)
window?.setLayout(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
)
findViewById<TextView>(R.id.title).text = title
findViewById<TextView>(R.id.tv_cancle).setOnClickListener{
dismiss()
}
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(context)
val adapter = SimpleAdapter(dataList) { position, item ->
itemClickListener?.onItemClick(position, item)
dismiss()
}
recyclerView.adapter = adapter
}
class SimpleAdapter(
private val items: List<String>,
private val onItemClick: (Int, String) -> Unit
) : RecyclerView.Adapter<SimpleAdapter.ViewHolder>() {
inner class ViewHolder(val view: View) : RecyclerView.ViewHolder(view)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_car, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val textView=holder.view.findViewById<TextView>(R.id.tv_car)
textView.text = items[position]
textView.setOnClickListener {
onItemClick(position, items[position])
}
}
override fun getItemCount() = items.size
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="16dp" />
<solid android:color="@android:color/white" />
</shape>
\ No newline at end of file
...@@ -6,52 +6,47 @@ ...@@ -6,52 +6,47 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<androidx.cardview.widget.CardView <LinearLayout
app:cardCornerRadius="10dp" android:background="@drawable/shape_dialog_custom"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
<LinearLayout android:orientation="vertical"
android:background="@color/white" >
<RelativeLayout
android:paddingHorizontal="16dp"
android:paddingVertical="10dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
> >
<RelativeLayout <TextView
android:paddingHorizontal="16dp" android:id="@+id/title"
android:paddingVertical="10dp" android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
> android:textSize="16sp"
android:textColor="@color/black"
<TextView android:text="选择车辆"
android:layout_width="wrap_content" android:layout_centerInParent="true"
android:layout_height="wrap_content" />
android:textSize="16sp"
android:textColor="@color/black"
android:text="选择车辆"
android:layout_centerInParent="true"
/>
<TextView
android:id="@+id/tv_cancle"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="14sp"
android:textColor="#555"
/>
</RelativeLayout>
<LinearLayout <TextView
android:id="@+id/ll_car" android:id="@+id/tv_cancle"
android:layout_width="match_parent" android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:text="取消"
> android:textSize="14sp"
android:textColor="#555"
/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recyclerView"
android:overScrollMode="never"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout> </LinearLayout>
\ No newline at end of file
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