Song view functionality broke, attempting to bind the music service to a Holder class through the RecyclerAdapter

This commit is contained in:
amazing-username
2019-03-25 21:55:34 -04:00
parent f99c4b797f
commit c89d867bff
3 changed files with 91 additions and 9 deletions
+12
View File
@@ -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