gpt4 book ai didi

listview - 使用Kotlin的RecyclerView不能垂直放置单元

转载 作者:行者123 更新时间:2023-12-02 13:24:23 24 4
gpt4 key购买 nike

即使预期的4行通过ViewHolder,我的列表也只显示一行数据。
RecyclerViewRecyclerView.AdapterRecyclerView.ViewHolder都按照我期望的方式工作。我看到正确的4行数据通过bind函数。但是,我在列表中仅看到一行。好像LinearLayoutManager没有正确地垂直放置单元格。我不确定错过了什么。

class SongListFragment : Fragment() {
private lateinit var mediaProvider:MediaProvider

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

mediaProvider = MediaLibraryTestSongProvider()
}

override fun onCreateView(inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {

//TODO: how to inflate fragment using Kotlin extension?
val songListView = inflater.inflate(R.layout.fragment_song_list, container, false)
val songListRecyclerView = songListView.songListRecyclerView

songListRecyclerView.layoutManager = LinearLayoutManager( activity )
songListRecyclerView.adapter = SongListCellAdapter(mediaProvider.getSongs() )

return songListView
}

private inner class SongListCellAdapter(val songList:List<Song>) : RecyclerView.Adapter<SongListCellHolder>()
{
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : SongListCellHolder {
val inflater = LayoutInflater.from( activity )
val songCellView = inflater.inflate(R.layout.cell_song_list,parent,false)
val holder = SongListCellHolder( songCellView )

return holder
}

override fun onBindViewHolder(holder: SongListCellHolder, position: Int) {
holder.bind(songList[position])
}

override fun getItemCount(): Int {
return songList.size
}
}

private inner class SongListCellHolder(itemView:View) : RecyclerView.ViewHolder(itemView)
{
fun bind( song:Song ) = with(itemView) {
songTitle.text = song.title
songArtist.text = song.artist
}
}

}

最佳答案

问题很简单(一旦您知道答案)。我的单元格布局cell_song_list具有layout_height="match_content",这导致每个单元格都是屏幕的大小。其他人在那里,但是不在屏幕上,在模拟器上,我没有滚动注意。

记录下来,这是我对单元格的更正布局,其中顶层LinearLayout使用layout_height="wrap_content",因此单元格的大小正确。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/songTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Title"
tools:text="Title" />

<TextView
android:id="@+id/songArtist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Artist"
android:textAppearance="@style/TextAppearance.AppCompat.Caption" />
</LinearLayout>

关于listview - 使用Kotlin的RecyclerView不能垂直放置单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45356374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com