我试图建立一个基本的赞美诗书应用程序。
所以我有顶部的应用程序栏和。一个包含歌曲列表的懒惰列。
@Composable
fun Songs(){
val listofsongs = listOfSongs()
val getALlData = listofsongs.getAllData()
LazyColumn(
contentPadding = PaddingValues(all= 5.dp),
verticalArrangement = Arrangement.spacedBy(8.dp)
){
items(items = getALlData){ song ->
SongView(song = song)
}
}
}
歌曲项目的视图采用一个框中的可单击文本。
@Composable
fun SongView(
song: Song,
) {
Box(
modifier = Modifier
.fillMaxWidth()
.padding(2.dp)
.border(BorderStroke(2.dp, Color.Black))
.clickable {context.StartActivity(Intent(context, HymnActivity:class.java)},
) {
Text(
modifier = Modifier
.fillMaxSize()
.padding(15.dp),
text = "${song.text}",
fontSize = 15.sp,
fontWeight = FontWeight.SemiBold,
color = Color.Black
)
Text(
modifier = Modifier
.fillMaxSize()
.align(Alignment.TopEnd)
.padding(15.dp),
text = "${song.number}",
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
color = Color.Black
)
}
}
我想让每个可点击的按钮都指向一个新的屏幕,并播放相应的歌曲。context.StartActivity(Intent(context, HymnActivity:class.java)
一直在唱一首歌。
lazy列从数据类Song中获取歌曲的名称和编号
data class Song(
val text:String,
val number:Int,
)
我试着创建一个不同的数据类,包含视图中的项目,然后将项目与不同的可比函数链接起来。
Github的链接
UI of application in question
1条答案
按热度按时间ztyzrc3y1#
每首歌都有一个特定的屏幕并不是一个好的方法。相反,将数据传递到下一个屏幕。
您可以通过Intent将歌曲传递到下一个屏幕:
首先将
onClick
函数添加到SongView
可组合函数中,然后在Modifier.clickable
中调用它接下来,您可以在屏幕中启动Intent并使用putExtra发送歌曲: