Song view functionality broke, attempting to bind the music service to a Holder class through the RecyclerAdapter
This commit is contained in:
+12
@@ -118,26 +118,38 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundle_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/check_manifest_result" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifest-checker" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/metadata_feature_manifest" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/resources" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shader_assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/signing_config" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/validate_signing_config" />
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ class SongViewActivity : BaseServiceActivity() {
|
|||||||
|
|
||||||
trackListItems = retrieveTrackItems()
|
trackListItems = retrieveTrackItems()
|
||||||
|
|
||||||
adapter = RecyclerAdapter(trackListItems)
|
adapter = RecyclerAdapter(trackListItems, this)
|
||||||
adapter.musicService = musicService
|
adapter.configureActivity(this)
|
||||||
trackList.adapter = adapter
|
trackList.adapter = adapter
|
||||||
trackList.setHasFixedSize(true)
|
trackList.setHasFixedSize(true)
|
||||||
trackList.setItemViewCacheSize(20);
|
trackList.setItemViewCacheSize(20);
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
package com.example.mear.adapters
|
package com.example.mear.adapters
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.app.Application
|
||||||
|
import android.content.ComponentName
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.ServiceConnection
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.os.IBinder
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
@@ -18,8 +25,38 @@ import com.example.mear.R
|
|||||||
import com.example.mear.playback.service.MusicService
|
import com.example.mear.playback.service.MusicService
|
||||||
import com.example.mear.repositories.TrackRepository
|
import com.example.mear.repositories.TrackRepository
|
||||||
|
|
||||||
class RecyclerAdapter( private val trackItemsSourceInit: ArrayList<TrackItems>) :
|
class RecyclerAdapter( private val trackItemsSourceInit: ArrayList<TrackItems>, private var act: Activity) :
|
||||||
RecyclerView.Adapter<RecyclerAdapter.TrackItemsHolder>() {
|
RecyclerView.Adapter<RecyclerAdapter.TrackItemsHolder>(),
|
||||||
|
Application.ActivityLifecycleCallbacks {
|
||||||
|
override fun onActivityPaused(activity: Activity?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivityStarted(activity: Activity?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivityDestroyed(activity: Activity?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivityStopped(activity: Activity?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onActivityResumed(activity: Activity?) {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
var activityInst: Activity? = act
|
||||||
var musicService: MusicService? = null
|
var musicService: MusicService? = null
|
||||||
|
|
||||||
override fun getItemCount(): Int {
|
override fun getItemCount(): Int {
|
||||||
@@ -33,30 +70,63 @@ class RecyclerAdapter( private val trackItemsSourceInit: ArrayList<TrackItems>)
|
|||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, position: Int): TrackItemsHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, position: Int): TrackItemsHolder {
|
||||||
val inflatedView = parent.inflate(R.layout.fragment_song_view, false)
|
val inflatedView = parent.inflate(R.layout.fragment_song_view, false)
|
||||||
return TrackItemsHolder(inflatedView, musicService!!)
|
return TrackItemsHolder(inflatedView, activityInst)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun configureActivity(actvity: Activity) {
|
||||||
|
activityInst = actvity
|
||||||
|
activityInst!!.application.registerActivityLifecycleCallbacks(this)
|
||||||
|
}
|
||||||
|
|
||||||
class TrackItemsHolder(v: View, musicService: MusicService) : RecyclerView.ViewHolder(v), View.OnClickListener {
|
class TrackItemsHolder(v: View, activity: Activity?) : RecyclerView.ViewHolder(v), View.OnClickListener {
|
||||||
private var view: View = v
|
private var view: View = v
|
||||||
private var musicService: MusicService = musicService
|
private var act = activity
|
||||||
|
private var musicService: MusicService? = null
|
||||||
private var trackItem: TrackItems? = null
|
private var trackItem: TrackItems? = null
|
||||||
private val imgWidth = 90
|
private val imgWidth = 90
|
||||||
private val imgHeight = 90
|
private val imgHeight = 90
|
||||||
|
private var mBound = false
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
v.setOnClickListener(this)
|
v.setOnClickListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private val connection = object : ServiceConnection {
|
||||||
|
|
||||||
|
override fun onServiceConnected(className: ComponentName, service: IBinder) {
|
||||||
|
// We've bound to LocalService, cast the IBinder and get LocalService instance
|
||||||
|
val binder = service as MusicService.LocalBinder
|
||||||
|
musicService = binder.service
|
||||||
|
mBound = true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onServiceDisconnected(arg0: ComponentName) {
|
||||||
|
mBound = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onClick(v: View) {
|
override fun onClick(v: View) {
|
||||||
try {
|
try {
|
||||||
val context = itemView.context
|
val context = itemView.context
|
||||||
val showPhotoIntent = Intent(context, SongViewActivity::class.java)
|
val showPhotoIntent = Intent(context, SongViewActivity::class.java)
|
||||||
//showPhotoIntent.putExtra(PHOTO_KEY, trackItem)
|
//showPhotoIntent.putExtra(PHOTO_KEY, trackItem)
|
||||||
val id = trackItem!!.id
|
val id = trackItem!!.id
|
||||||
musicService.playTrack(id)
|
//context.startActivity(showPhotoIntent)
|
||||||
context.startActivity(showPhotoIntent)
|
|
||||||
|
if (!mBound) {
|
||||||
|
val intent = Intent(act, MusicService::class.java)
|
||||||
|
act!!.bindService(intent, connection, Context.BIND_AUTO_CREATE)
|
||||||
|
/**
|
||||||
|
Intent(this, MusicService::class.java).also { intent ->
|
||||||
|
act!!.applicationContext(intent, connection, Context.BIND_AUTO_CREATE)
|
||||||
|
act.applicationContext
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (ex: Exception) {
|
catch (ex: Exception) {
|
||||||
val exMsg = ex.message
|
val exMsg = ex.message
|
||||||
|
|||||||
Reference in New Issue
Block a user