как получить доступ к методам exoplayer внутри адаптера просмотра recycler - PullRequest
1 голос
/ 17 июня 2020

У меня есть экзоплеер, который воспроизводит видео. И я хочу зафиксировать его текущую позицию.

Итак, в MainActivity

lateinit var player: SimpleExoPlayer

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

работает нормально

Но, необходимо зафиксировать это событие в представлении Recycler Адаптер

в MainActivity я передаю данные в режим ресайклера следующим образом:

 var viewAdapter = MainActivityAdapter(data)

Поскольку player задерживается, я не могу получить к нему доступ в адаптере, как показано ниже

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

это дает ошибку.

Итак, любые предложения по этому

1 Ответ

0 голосов
/ 17 июня 2020

Вам просто нужно создать глобальную переменную, вот и все. И будьте осторожны, чтобы обрабатывать ошибки при его использовании.

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 и другие вещи)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...