Kotlin安卓开发:随机加载Drawable时同步显示对应说明文本
Kotlin安卓实现随机图片对应说明文本动态切换
核心实现逻辑是将图片资源ID和对应的说明文本做绑定存储,随机排序时二者作为整体打乱,从根源避免图片和文本匹配错位。
- 替换原有单独存储图片ID的列表,使用配对数据结构同时存储图片资源和对应文本
- 初始化列表时为每一张drawable资源配置好专属说明
- 随机取数时同步完成图片加载和文本设置,不需要额外做ID匹配判断
完整实现代码
首先在页面类中定义配对数据结构,替换原有listId变量:
// 图片资源与说明文本的配对数据类 data class ImageMatchItem(val drawableResId: Int, val description: String) // 替换原有的listId,存储绑定好的图片-文本对 private lateinit var imageMatchList: List<ImageMatchItem>
修正初始化列表方法,注意要把该方法从pickNumber()内部移到同级位置,页面初始化时调用一次即可:
private fun initializeList() { imageMatchList = listOf( ImageMatchItem(R.drawable.r02, "替换为r02图片对应的专属说明"), ImageMatchItem(R.drawable.w02s, "替换为w02s图片对应的专属说明"), ImageMatchItem(R.drawable.ror, "替换为ror图片对应的专属说明"), ImageMatchItem(R.drawable.rands, "替换为rands图片对应的专属说明"), ImageMatchItem(R.drawable.rups, "替换为rups图片对应的专属说明"), ImageMatchItem(R.drawable.rles, "替换为rles图片对应的专属说明"), ImageMatchItem(R.drawable.rsw, "替换为rsw图片对应的专属说明") ) }
修改随机选图方法,同步设置对应文本(需要提前在布局中为三个ImageView分别添加对应展示说明的TextView,示例中对应ID为textView/textView2/textView3):
private fun pickNumber (){ val (item1, item2, item3) = imageMatchList.shuffled() // 第一组图片+文本 binding.imageView.setImageResource(item1.drawableResId) binding.textView.text = item1.description // 第二组图片+文本 binding.imageView2.setImageResource(item2.drawableResId) binding.textView2.text = item2.description // 第三组图片+文本 binding.imageView3.setImageResource(item3.drawableResId) binding.textView3.text = item3.description }
注意:原代码中
initializeList()被错误嵌套在pickNumber()方法内部,会导致语法错误和重复初始化问题,必须移到方法外部,在页面首次加载时调用一次完成列表初始化即可。
内容的提问来源于stack exchange,提问作者ekio87
相关产品推荐
相关产品推荐

