直播视频app源码,底部弹出的列表对话框

直播视频app源码,底部弹出的列表对话框实现的相关代码

1.activity_main.xml

 

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

 

2.MainActivity.kt

 

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

 

3.实体类Dict.kt

 

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

 

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

 

 

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

 

以上就是 直播视频app源码,底部弹出的列表对话框实现的相关代码,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(77)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示