如何在回收器视图适配器中访问 exoplayer 方法

how to access exoplayer methods inside recycler view adapter

我有一个播放视频的exoplayer。我想捕捉它的当前位置。

所以,在 MainActivity

lateinit var player: SimpleExoPlayer

fun timeCapture(view: View) {
        Log.d(TAG,"${player.currentPosition}")
    }

工作正常

但是,事实是需要在 Recycler 视图适配器上捕获此事件

在 MainActivity 中,我像这样将数据传递给回收器视图,

 var viewAdapter = MainActivityAdapter(data)

因为 player 是 lateinit 我不能像下面这样在适配器中访问它

        Log.d("logger","${MainActivity().player.currentPosition}")

这给出了错误。

那么,对此有何建议

你只需要创建一个全局变量就可以了。并在使用时小心处理错误。

GlobalVariables.kt

package com.company.notexist.model

import com.google.android.exoplayer2.SimpleExoPlayer

object GlobalVariables {
    lateinit var player: SimpleExoPlayer
}

访问上面的 player 变量将其导入任何文件

import com.company.notexist.model.GlobalVariables.player

then rest of the code is normal
...
player = ExoPlayerFactory.newSimpleInstance(this)
id_player_view.player = player
...
...

然后在适配器上像这样使用它,

Log.d("logger","${player.currentPosition}")

但不要忘记导入语句和错误处理(即检查 null 和其他内容)