我正在制作一个音乐播放器,它在 recycler_view.LayoutManager = LayoutManager recycler_view.adapter = SongListAdapter 行中出现错误

问题描述 投票:0回答:1

我是android开发新手,我决定编写一个音乐播放器,但它在recycler_view.LayoutManager = LayoutManager和recycler_view.adapter = SongListAdapter行中给出了错误。我不明白问题出在哪里,知道的人可以告诉我吗?这是 MainActivity 的代码:

package com.example.zevamusic

import android.annotation.SuppressLint
import android.database.Cursor
import android.os.Bundle
import android.provider.MediaStore
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import com.example.zevamusic.adapters.SongListAdapter
import com.example.zevamusic.model.SongModel
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {

    var songModelData:ArrayList<SongModel> = ArrayList()
    var songListAdapter:SongListAdapter?=null

    @SuppressLint("Range")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        var songCursor: Cursor? = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            null,null,null,null)
        while (songCursor!=null && songCursor.moveToNext()){
            var songName = songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.TITLE))
            var songDuration = songCursor.getString(songCursor.getColumnIndex(MediaStore.Audio.Media.DURATION))
            songModelData.add(SongModel(songName,songDuration))
        }
        songListAdapter = SongListAdapter(songModelData)
        var layoutManager = LinearLayoutManager(applicationContext)
        recycler_view.LayoutManager = layoutManager
        recycler_view.adapter = songListAdapter
    }
}

这是来自 SongListAdapter 的代码:

package com.example.zevamusic.adapters

import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import com.example.zevamusic.R
import com.example.zevamusic.model.SongModel

class SongListAdapter(SongModel:ArrayList<SongModel>):RecyclerView.Adapter<SongListAdapter.SongListViewHolder>() {

    var mSongModel = SongModel

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

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SongListViewHolder {
        var view = LayoutInflater.from(parent!!.context).inflate(R.layout.music_row,parent,false)
        return SongListViewHolder(view)
    }

    override fun onBindViewHolder(holder: SongListViewHolder, position: Int) {
        var model = mSongModel[position]
        var songName = model.mSongName
        var songDuration = model.mSongDuration
        holder!!.songTV.text = songName
        holder.durationTV.text = songDuration
    }



    class SongListViewHolder(itemView: View):RecyclerView.ViewHolder(itemView){
        var songTV:TextView
        var durationTV:TextView
        var albumnAtr:ImageView
        init {
            songTV = itemView.findViewById(R.id.song_name_tv)
            durationTV = itemView.findViewById(R.id.song_duration_tv)
            albumnAtr = itemView.findViewById(R.id.al_image_view)

        }
    }
}

这是来自 SongModel 的代码:

package com.example.zevamusic.model

class SongModel(songName: String,songDuration:String) {
    var mSongName = songName
    var mSongDuration = songDuration

}

我正在基于视频剪辑制作这个应用程序,我注意到其中有我没有的导入(import kotlinx.android.synthetic.main.activity_main.*),我决定添加它,但由于某种原因word android 在这个导入中亮起红色,我尝试修复导入中的问题,但我仍然没有弄清楚问题是什么。

android kotlin
1个回答
0
投票

您添加布局管理器的语法是错误的。 您可以通过两种方式添加布局管理器。

  1. layoutManager
    不是
    LayoutManager
// deafault orientation is VERTICAL. replace the context accordingly.
recyclerView.layoutManager = LinearLayoutManager( context, RecyclerView.HORIZONTAL, false) 
  1. 您可以直接将布局管理器添加到XML文件。
<androidx.recyclerview.widget.RecyclerView
       android:id="@+id/recyclerView"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:layout_constraintBottom_toBottomOf="parent"

       //like here
       app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
       //you can also set orientation like this
       android:orientation="vertical"
© www.soinside.com 2019 - 2024. All rights reserved.