Открыть фрагмент по клику в RecyclerView другого фрагмента
У меня есть основной фрагмент:
class GroupsFragment(uid:Int) : Fragment(){
private var groupChoiser=VKGroupChoiseFragment(uid)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) =
inflater.inflate(R.layout.groups_fragment, container, false)!!
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val manager = activity!!.supportFragmentManager
val transaction= manager.beginTransaction()
transaction.replace(R.id.vk_groups_wall_view,groupChoiser)
transaction.commit()
}
}
Из него сразу вызывается фрагмент с RecyclerView:
class VKGroupChoiseFragment(uid:Int) : Fragment() {
private val uid=uid
lateinit var recyclerView: RecyclerView
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_vk_group_choise, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
recyclerView = view!!.findViewById(R.id.vk_groups_recyclerview)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = LinearLayoutManager(context)
getVKGroups(uid,context!!,recyclerView)
}
}
Адаптер для RecyclerView:
class VKGroupsAdapter(
mDataSet: List<VKGroupItem>,
width: Int
) :
RecyclerView.Adapter<VKGroupsAdapter.VKGroupsViewHolder>() {
private var mDataSet: ArrayList<VKGroupItem>
private var displayWidth = width
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): com.e.socialparser.fragments.vk_tabs.vk_groups_fragment.VKGroupsAdapter.VKGroupsViewHolder {
val view: View = LayoutInflater.from(parent.context).inflate(
R.layout.vk_groups_row,
parent,
false
)
return VKGroupsViewHolder(view)
}
override fun onBindViewHolder(
holder: com.e.socialparser.fragments.vk_tabs.vk_groups_fragment.VKGroupsAdapter.VKGroupsViewHolder,
position: Int
) {
Glide.with(holder.avatar.context).load(mDataSet[position].photo_100).into(holder.avatar)
holder.groupName.setText(mDataSet[position].name)
holder.groupScreenName.setText(mDataSet[position].screen_name)
}
override fun getItemCount() = mDataSet.size
inner class VKGroupsViewHolder(itemView: View):
RecyclerView.ViewHolder(itemView) {
val avatar: ImageView
val groupName: TextView
val groupScreenName:TextView
init {
avatar = itemView.findViewById<View>(R.id.vk_group_profile_photo) as ImageView
groupName = itemView.findViewById<View>(R.id.vk_group_name) as TextView
groupScreenName=itemView.findViewById<View>(R.id.vk_group_screen_name) as TextView
}
}
init {
this.mDataSet = mDataSet as ArrayList<VKGroupItem>
}
}
Как по клику в Recyclerview Item открыть другой фрагмент и передать в него данные?
class WallFragment(uid: Int?) : Fragment() {
lateinit var recyclerView: RecyclerView
private val uid=uid
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val view: View = inflater.inflate(R.layout.wall_fragment, container, false)
return view
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
recyclerView = view!!.findViewById(R.id.vk_wall_recyclerview)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = LinearLayoutManager(context)
getVKWall(uid,context!!,recyclerView)
}
override fun onResume() {
super.onResume()
}
}