Android Recyclerview未随medialibrary中的更改而更新

Android Recyclerview未随medialibrary中的更改而更新,android,kotlin,mediastore,Android,Kotlin,Mediastore,我有一个从存储器中检索所有音乐列表的代码,但在我重命名一个文件后,recyclerview不会随着更改而更新 即使删除了一个文件,它仍然保持不变 fun Context.musicFiles():可变列表{ val list:MutableList<Music> = mutableListOf() val uri: Uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI //val uri: Uri = MediaStore.Audio.

我有一个从存储器中检索所有音乐列表的代码,但在我重命名一个文件后,recyclerview不会随着更改而更新 即使删除了一个文件,它仍然保持不变

fun Context.musicFiles():可变列表{

val list:MutableList<Music> = mutableListOf()

val uri: Uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
//val uri: Uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI

// IS_MUSIC : Non-zero if the audio file is music
val selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"

// Sort the musics
val sortOrder = MediaStore.Audio.Media.TITLE + " ASC"
//val sortOrder = MediaStore.Audio.Media.TITLE + " DESC"

// Query the external storage for music files
val cursor: Cursor = this.contentResolver.query(
        uri, // Uri
        null, // Projection
        selection, // Selection
        null, // Selection arguments
        sortOrder // Sort order
)

// If query result is not empty
if (cursor!= null && cursor.moveToFirst()){
    val id:Int = cursor.getColumnIndex(MediaStore.Audio.Media._ID)
    val title:Int = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)
    val artist:Int= cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)
    val musicpathh:Int= cursor.getColumnIndex(MediaStore.Audio.Media.DATA)
    val album:Int = cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)


    // Now loop through the music files
    do {
        val audioId:Long = cursor.getLong(id)
        val audioTitle:String = cursor.getString(title)
        val audioArtist:String = cursor.getString(artist)
        val audiopath:String = cursor.getString(musicpathh)
        val audioalbum:String = cursor.getString(album)

        // Add the current music to the list
        list.add(Music(audioId,audioTitle,audioArtist,audiopath,audioalbum))
    }while (cursor.moveToNext())
}

// Finally, return the music files list
return  list

}

请正确设置代码格式,并添加有关问题的更多信息。格式化帮助将在屏幕右侧提供。您是否忘记更新适配器?请正确格式化代码并添加有关问题的更多信息。格式化帮助将在屏幕右侧提供。您是否忘记更新适配器?
    val titles = mutableListOf<String>()
    val artist = mutableListOf<String>()
    val musicpath = mutableListOf<String>()
    val album = mutableListOf<String>()
    val checkd = mutableListOf<Boolean>()
    for (music in list){titles.add(music.title)}
    for (music in list){artist.add(music.artist)}
    for (music in list){musicpath.add(music.audiopath)}
    for (music in list){album.add(music.audioalbumm)}
    for (music in list){checkd.add(false)}

    val adapter= HobbiesAdapter(this, titles, artist, musicpath, album, checkd)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    val view = LayoutInflater.from(context).inflate(R.layout.list_item, parent, false)
    return MyViewHolder(view)
}

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

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val hobby = hobbies[position]
    val artistt = artis[position]
    val patth = pathh[position]
    val albbum = albumm[position]
    holder.setData(hobby, artistt, patth, position, albbum)
}

inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

    var currentHobby: String = ""
    var currentArtist: String = ""
    var currentPath: String = ""
    var currentAlbum: String = ""
    var currentPosition: Int = 0
    var checkdd:Int=0
    var currentCheckedStatus:Boolean=false

    init {
        itemView.setOnClickListener {
            if(itemView.checkstatus.isChecked==true){
                itemView.checkstatus.isChecked=false
                checkdd=adapterPosition
                checkd.set(checkdd,false)
            }
            else{
                itemView.checkstatus.isChecked=true
                checkdd=adapterPosition
                checkd.set(checkdd,true)
            }
        }
        itemView.checkstatus.setOnClickListener {
            if(itemView.checkstatus.isChecked==true){
                itemView.checkstatus.isChecked=false
                checkdd=adapterPosition
                checkd.set(checkdd,false)
            }
            else{
                itemView.checkstatus.isChecked=true
                checkdd=adapterPosition
                checkd.set(checkdd,true)
            }
        }
    }

    fun setData(hobby: String, artiist: String, paath: String, pos: Int, albuum: String) {
        itemView.txvTitle.text = hobby
        itemView.txvArtist.text=artiist
        itemView.txvPath.text=paath
        itemView.txvAlbum.text=albuum
        itemView.checkstatus.isChecked=checkd.get(pos)

        this.currentHobby = hobby
        this.currentArtist = artiist
        this.currentPath = paath
        this.currentAlbum = albuum
        this.currentPosition = pos
        this.currentCheckedStatus=checkd.get(pos)
    }
}