RecyclerView con Kotlin no colocando celdas verticalmente

Mi list solo muestra una sola fila de datos, aunque las 4 filas esperadas pasan por el ViewHolder .

The RecyclerView , RecyclerView.Adapter y RecyclerView.ViewHolder funcionan como espero AFAICT. Veo las 4 filas de datos correctas que pasan a través de la function de vinculación. Sin embargo, solo veo una fila en la list. Es como si el LinearLayoutManager no LinearLayoutManager colocando correctamente las celdas en una orientación vertical. No estoy seguro de lo que se ha perdido.

 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 } } } 

El problema resultó ser simple (una vez que sabes la respuesta). Mi layout para la celda, cell_song_list tenía layout_height="match_content" que daba como resultado que cada celda layout_height="match_content" el tamaño de la pantalla. Los otros estaban allí, pero fuera de la pantalla, y en el simulador no me desplacé para darme count.

Para el logging, aquí está mi layout corregido para la celda, con el nivel superior LinearLayout usando layout_height="wrap_content" , por lo que las celdas tienen el tamaño correcto.

 <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>