Я бы сделал это так. Создайте интерфейс:
interface AdapterContract{
fun onListItemClick(id: String) //whatever the parameter is
}
Когда вы создаете экземпляр адаптера в Fragment1
, вы можете реализовать этот интерфейс:
class Fragment1 : Fragment(), AdapterContract{
...
//when instantiating the adapter:
private val adapter: MyAdapter by lazy{
MyAdapter(this //for the interface)
}
//override the method of Adapter contract
}
Конструктор вашего адаптера должен выглядеть следующим образом: MyAdapter(adapterContract: AdapterContract) : ListAdapter<MyAdapter.MyViewHolder>(Diff_Util_SOME_OBJECT)
Чем в адаптерах ViewHolder:
itemHolder?.setOnClickListener{
adapterContract.onListItemClick(someId)
}
Теперь в вашем методе переопределения в Fragment1
:
override method onListItemClick(id: String){
//pass this id to the next opening fragment (like Bundles or navargs)
//init `Fragment2` which is going to have all items, that belong to `Fragment1` selected item
}
Загрузить данные:)
Я надеюсь, что вы используете базу данных или что-то. Должно работать и с жестко закодированными структурами данных, но только для безопасности:).