DataService, два RecyclerView, не может видеть список элементов на втором - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю простой аудиоплеер.У меня есть два RecyclerView, и я хочу увидеть список элементов из моего DataService, но я получаю исключение.Не могу понять, что пошло не так.

Когда я нажимаю на элемент «Аудио файлы 1» в предыдущем действии (RecyclerView), он должен показать мне список «unitOneSound».

Но я получаю ошибку:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nikolai.leader/com.example.nikolai.leader.Controller.SoundActivity}:

java.lang.IllegalStateException: songType не должен быть нулевым

Я думаю, что проблема с DataServiceпотому что, когда я меняю DataService.getSong(songType) на DataService.unitOneSound, он работает и показывает список песен, но для всех альбомов тот же список песен.

Адаптер:

    class RecyclerSoundScreenAdapter(val context: Context, val song: List<SoundScreen>):  RecyclerView.Adapter<RecyclerSoundScreenAdapter.Holder>() {

    override fun onBindViewHolder(holder: Holder, position: Int) {
        holder.bindActivity(song[position], context)
    }

    override fun getItemCount(): Int {
        return song.count()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
        val view = LayoutInflater.from(context).inflate(R.layout.sound_template, parent, false)
        return Holder(view)
    }

    inner class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val songName = itemView.findViewById<TextView>(R.id.sound_text_view)

        fun bindActivity(sound: SoundScreen, context: Context) {
            songName.text = sound.songTitle
        }
    }
}

Контроллер

    class SoundActivity : AppCompatActivity() {

    lateinit var adapter: RecyclerSoundScreenAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.sound_activity)

        val songType = intent.getStringExtra("activity")
        adapter = RecyclerSoundScreenAdapter(this, DataService.getSong(songType))

        val layoutManager = LinearLayoutManager(this)
        soundListView.layoutManager = layoutManager
        soundListView.adapter = adapter
    }
}

Модель:

    class SoundScreen(var songTitle: String) {
    override fun toString(): String {
        return songTitle
    }
}

DataService:

 object DataService {
   val unitOneSound = listOf(
        SoundScreen("Song 1"),
        SoundScreen("Song 2"),
        SoundScreen("Song 3"),
        SoundScreen("Song 4"),
        SoundScreen("Song 5"),
        SoundScreen("Song 6")
    )

    val unitTwoSound = listOf(
        SoundScreen("Song 1"),
        SoundScreen("Song 2"),
        SoundScreen("Song 3"),
        SoundScreen("Song 4"),
        SoundScreen("Song 5"),
        SoundScreen("Song 6")
    )

   val listOfSounds = listOf<SoundScreen>()

    fun getSong(activity: String) : List<SoundScreen>{
        return when(activity){
            "Audio files 1" -> unitOneSound
            "Audio files 2" -> unitTwoSound
            else -> listOfSounds
        }
    }

Первая активность, с которой я начинаю свою звуковую деятельность

class SecondActivity : AppCompatActivity() {

    lateinit var adapter : RecyclerSecondScreenAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.second_activity)

        val activityType = intent.getStringExtra("unit")
        adapter = RecyclerSecondScreenAdapter(this, DataService.getActivities(activityType)){ activity ->
           val soundIntent = Intent(this, SoundActivity::class.java)
//            soundIntent.putExtra(EXTRA_ACTIVITY, activity)
            startActivity(soundIntent)
        }

        val layoutManager = LinearLayoutManager(this)
        activityListView.layoutManager = layoutManager
        activityListView.adapter = adapter
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...