kotlin底部弹出的列表对话框(单选)(代码片段)

彬sir哥 彬sir哥     2022-12-17     776

关键词:

1.实现底部弹出的列表对话框(单选)效果如下:


2.activity_main.xml

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginEnd="10dp"
            android:textSize="30dp" />

        <TextView
            android:id="@+id/tv2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginEnd="10dp"
            android:layout_weight="1.0"
            android:gravity="right"
            android:textSize="30dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/tv1"
            app:layout_constraintTop_toTopOf="parent" />
    </LinearLayout>


3.MainActivity.kt

class MainActivity : AppCompatActivity() 

    private var list: MutableList<Dict> = ArrayList()
    private var x :Int = 0

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tv1.text = "宿舍";tv2.text = "小红"//默认
        initDatas()
        //点击底部弹出的列表对话框
        ll.setOnClickListener 
            for (i in 0 until list.size) 
                if (tv2.text == list[i].dataName)//如果tv2.text是小红找到对应list的i的姓名
                    x = i;//i给x的赋值
                    break
                
            
            //底部弹出的列表对话框
            showBottomRadListDialog(tv1.text.toString(), list[x].dataValue, list as List<Dict>, object : OnResultCallback<String> 
                //列表对话框被点击自己选择某一item数据
                override fun onResult(t: Any) 
                    var dataValue :String = t.toString()
                    for (i in 0 until list.size)
                        if (dataValue == list[i].dataValue)
                            //dataValue对应的list[i].dataValue给tv2.text的赋值
                            tv2.text = list[i].dataName
                            break
                        
                    
                
            )
        
    
    //Dict实体类设置数据,可以看到这数据有规律
    private fun initDatas() 
        var sc = Dict("1", "4", "宿舍", "小红", "1");list.add(sc)
        sc = Dict("2", "4", "宿舍", "小彬", "2");list.add(sc)
        sc = Dict("3", "4", "宿舍", "小强", "3");list.add(sc)
        sc = Dict("4", "4", "宿舍", "小华", "4");list.add(sc)
        sc = Dict("5", "4", "宿舍", "小军", "5");list.add(sc)
        sc = Dict("6", "4", "宿舍", "小文", "6");list.add(sc)
        sc = Dict("7", "4", "宿舍", "小可", "7");list.add(sc)
        sc = Dict("8", "4", "宿舍", "小进", "8");list.add(sc)
        sc = Dict("9", "4", "宿舍", "小明", "9");list.add(sc)
        sc = Dict("10", "4", "宿舍", "小一", "10");list.add(sc)
        sc = Dict("11", "4", "宿舍", "小乐", "11");list.add(sc)
    

4.实体类Dict.kt

public class Dict 
    private String id;//可以忽略
    private String dataType;//可以忽略
    private String dataTypeName;//表示“宿舍”两个字
    private String dataName;//表示宿舍里每人的姓名
    private String dataValue;//表示宿舍里人姓名排序
    ......

5.DialogUtil.kt,底部弹出的列表对话框(单选)

fun showBottomRadListDialog(title:String?,selValue:String?,dictList:List<Dict>, callback: OnResultCallback<String>, defaultBackground:Boolean = true)
    var dialog = AnyLayer.dialog()
        .contentView(R.layout.dialog_list)//列表框布局
        .gravity(Gravity.BOTTOM)
        .animStyle(DialogLayer.AnimStyle.BOTTOM)
    //使用默认的背景
    if(defaultBackground)
        dialog.backgroundDimDefault()
    
    dialog.show()
    dialog.getView<TextView>(R.id.tv_dialog_title).text = title?:""
    var rv = dialog.getView<MaxHeightRecyclerView>(R.id.mRecyclerView)
    //PhoneU:屏障像素获取手机大小(分辨率)
    rv.setMaxHeight(PhoneU.getScreenPix(MyApplication.context)!!.heightPixels * 3 / 5 )
    var selValue: String?= selValue
    var mAdapter = RadListAdapter(selValue).apply
        setOnItemClickListener  _, _, position ->
            var dict = getItem(position)
            dict?.let 
                var mValue = it.dataValue
                if(mValue.equals(selValue))
                    selValue = ""
                else
                    selValue = mValue
                
                setCheckSelValue(selValue)
            
        
    
    rv.adapter = mAdapter
    mAdapter.setList(dictList)
    rv.scrollToPosition(mAdapter.getSelectIndex())
    var fl = dialog.getView<FrameLayout>(R.id.fl_dialog_confirm)
    fl.setOnClickListener 
        dialog.dismiss()
        selValue?.let  it1 -> callback.onResult(it1) 
    

5.源代码zip下载:
    下载源代码

kotlin实现在activity中间弹出的list列表弹窗(带选中效果)的功能(代码片段)

实现:主工程项目要导入的第三方项目library,如下图:温馨提示:第三方项目library里面的不同弹窗有很多:从顶部弹窗、从底部弹窗、自由定位弹窗、自定义全屏弹窗、显示旋转弹窗(动画)…,适合工作,你想改什么样的弹窗... 查看详情

kotlin实现从底部弹出带手势拖拽的列表弹窗的功能(代码片段)

实现:主工程项目要导入的第三方项目library,如下图:温馨提示:第三方项目library里面的不同弹窗有很多:从顶部弹窗、从底部弹窗、自由定位弹窗、自定义全屏弹窗、显示旋转弹窗(动画)…,适合工作,你想改什么样的弹窗... 查看详情

kotlin学习之类与对象继承与构造函数(代码片段)

...建一个Person类。右击包→New→KotlinFile/Class,在弹出的对话框中输入“Person”。对话框在默认情况下自动选中的是创建一个File,File通常是用于编写Kotlin顶层函数和扩展函数的,我们可以点击展开下拉列表进行切换࿰... 查看详情

移动端底部input被弹出的键盘遮挡(代码片段)

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView 移动端input被键盘遮挡,事件是跳到可视区域!document.querySelector(‘#inputId‘).scrollIntoView();//只要在input的点击事件,或者获取焦点的事件 还有一个事件是指定在上方... 查看详情

vba自动关闭弹出的对话框+vba错误捕捉(代码片段)

自动关闭Msgbox对话框:PrivateDeclareFunctionMsgBoxExLib"user32"Alias"MessageBoxTimeoutA"(ByValhwndAsLong,ByVallpTextAsString,ByVallpCaptionAsString,ByValwTypeAsVbMsgBoxStyle,ByValwlangeAsLong,ByValdwTimeoutAs 查看详情

kotlin仿微信长按列表弹出菜单(动画)(代码片段)

一、测试实现:二、项目:仿微信长按列表弹出菜单代码,MainActivity.ktclassMainActivity:AppCompatActivity(),AdapterView.OnItemLongClickListenerprivatevalpoint=Point(< 查看详情

android-实现底部弹出popupwindow并让背景逐渐变暗(代码片段)

...变暗在android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu、PopupWindow都能实现。这里主要介绍后两者:PopupMenu、PopupWindow的实现。先看两个效果图左边PopupMenu,右边PopupWindow࿱... 查看详情

android开发实战之底部dialog弹出效果

 在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方法(取决于你... 查看详情

android-实现底部弹出popupwindow并让背景逐渐变暗(代码片段)

...变暗在android开发中,经常需要通过点击某个按钮弹出对话框或者选择框,通过Dialog或者PopupMenu、PopupWindow都能实现。这里主要介绍后两者:PopupMenu、PopupWindow的实现。先看两个效果图左边PopupMenu,右边PopupWindow& 查看详情

pycharm记录(代码片段)

...:increase—>IncreaseFontSize(双击)—>在弹出的对话框中选择AddMouseShortcut在弹出的对话框中同时按住ctrl键和鼠标滚轮向上滑。File&mdas 查看详情

一个实现带灰色蒙版从底部弹出的popupwindow基类封装(解决蒙版覆盖虚拟按键问题)(代码片段)

...况。4.使用WindowManager的透明度设置灰色蒙版,存在当底部展示虚拟 查看详情

弹出模式对话框后未选中单选按钮?

】弹出模式对话框后未选中单选按钮?【英文标题】:Radiobuttonuncheckedaftermodaldialogpopsup?【发布时间】:2011-08-2501:24:10【问题描述】:如果有人选择“否”,我想显示一个模式对话框。它有效,但我还需要保留选择的答案“否”... 查看详情

如何将oracle数据库转为mssql

...er,单击file/ReverseEngineer/database,在弹出的NewPhysicalDataModel对话框的General选项卡中,命名Modelname(本例中命名为test_pdm_oracle),DBMS选为ORACLEVersion11g,单击确定。在弹出的DatabaseReverseEngineeringOptions对话框的Selection选项卡中,单击Usi... 查看详情

尝试用kotlin做一个app(代码片段)

新闻列表添加新闻列表可以使用RecyclerView。但是有个问题,RecyclerView只会在内部滚动,不会带动整个屏幕滚动。所以在原根布局外层添加androidx.core.widget.NestedScrollView,并且在原先根局部,添加android:descendantFocusability,解决进入... 查看详情

解决fastboot模式下执行fastbootflashingunlock命令失败的问题(代码片段)

...#xff1b;找到设备右键选择“更新设备驱动”;在弹出的对话框中选择“浏览我的电脑以查找驱动®”在弹出的对话框中选择“让我从计算机上的可用驱动程序列表中选取(L)”在弹出的对话框中取消勾选“显示兼容硬件©”,... 查看详情

mui自定义从底部弹出的弹出框

...果: 点击“点击就送”那个按钮之后,弹窗从底部弹出并自带蒙层,然后点击弹窗之外的灰色部分就从底部消失: 第一步:引入mui.css或者mui.min.css       引入 mui.min.js或者mui.js 第二... 查看详情

android弹出的对话框在点击确定后消失

在点击确定或取消按钮后,对话框消失的原因是什么?调用默认函数?参考技术A有可能是窗口出来后,焦点还在item上,所以当你点击的时候会造成item响应!你在可以点击事件里加一句代码:item.setclickable(false);在dismiss的时候重... 查看详情

bottomnavigationview+viewpager+fragment底部导航按钮kotlin版本(代码片段)

1.BottomNavigationView的使用首先在MainActivity的布局中加入BottomNavigationView如下:<com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/bottom_nav_view"an 查看详情