直播视频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源码,底部弹出的列表对话框实现的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现