batchのブログ

知見の備忘録

Groupieでitemクリックを実装しちゃう.おまけにNavigationでFragmentに遷移しちゃう

lisawrayさん,お世話になっております.
github.com


ですが,なぜかあまりGroupieを使ったときのitemクリックの実装の仕方が調べても全然出てきませんでした.
なのでその知見を共有.

そして,Groupieでリスト表示してitemをクリックしたとき別のFragmentに遷移するってことを自分はやりたくて,いろんなアプリを開発する上で多用するものだと思うのでそのやり方もここに残しておきます.

まず,GroupAdapterを実装.

val groupAdapter = GroupAdapter<GroupieViewHolder>()

そして,ItemをaddAllとかで入れるときにsetOnItenClickListener()というのがいるのでその子をはやしてあげる

        groupAdapter.apply {
            update(listItem)
            setOnItemClickListener(onItemClickListener)
        }

はやしたsetOnItenClickListener()の()の中にいれてるonItemClickLitenerを実装する.
この中には具体的に,itemがクリックされたときに行いたい処理を書きます.
今回だと,Navigationをつかってnavグラフで管理されている別のFragmentに遷移する処理を書いています.
また,これも調べて全然出てこなかった,どのitemがクリックされたかindexを取得する方法も一緒に書いています.

    private val onItemClickListener = OnItemClickListener { item, view ->
        // どのitemがクリックされたかindexを取得
        val index = groupAdapter.getAdapterPosition(item)
       // Navifationで別のFragmentに移動.navigateの中のidはnavグラフに定義したactionのid
        findNavController().navigate(R.id.actionMusicFragment)
    }

参考までに.


ミニマリストエンジニアbatchでした.