📅  最后修改于: 2023-12-03 15:36:14.973000             🧑  作者: Mango
在 Android 应用程序中,导航到不同的屏幕或片段是很常见的。本文将介绍如何从 RecyclerView 导航到片段 Kotlin。
添加导航图
首先,您需要打开导航编辑器并添加您要导航的目标片段。为了做到这一点,请右键单击项目资源并选择“New>Android Resource File”。在“Resource type”下选择“Navigation”,并在“File name”中输入一个名称。然后点击“OK”。
定义目标片段
您需要为目标片段定义目的地 ID。 为此,请打开您的目标片段 XML 文件并为您的片段定义一个 ID:
<fragment
android:id="@+id/my_fragment"
android:name="com.example.MyFragment"
android:label="My Fragment"
tools:layout="@layout/fragment_my" />
定义操作
接下来,您需要在导航编辑器中定义用于从 RecyclerView 导航到片段的操作。为此,请在“Actions”区域中单击“New Destination”按钮,并选择“Fragment”。选择您的目标片段并输入一个操作名称。 然后,单击“OK”。
定义 RecyclerView 适配器
您需要在 RecyclerView 适配器中定义一个接口来处理项目点击事件并导航到目标片段。 为此,请创建一个名为“OnItemClickListener”的接口:
interface OnItemClickListener {
fun onItemClick(itemId: Int)
}
实现 onItemClickListener
然后,您需要在 RecyclerView 适配器中实现此接口。 为此,请将接口添加到您的适配器类,并将其与 RecyclerView.ViewHolder 配合使用:
class MyAdapter(private val items: List<String>, private val clickListener: OnItemClickListener) :
RecyclerView.Adapter<MyAdapter.ViewHolder>() {
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView = view.findViewById(R.id.text)
fun bind(item: String, clickListener: OnItemClickListener) {
textView.text = item
itemView.setOnClickListener {
clickListener.onItemClick(adapterPosition)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) =
holder.bind(items[position], clickListener)
override fun getItemCount() = items.size
}
处理项目点击事件
您需要处理 RecyclerView 适配器中的项目点击事件。 为此,请在要处理的片段中实现您添加的 OnItemClickListener:
class MyFragment : Fragment(), OnItemClickListener {
override fun onItemClick(itemId: Int) {
findNavController().navigate(R.id.my_fragment)
}
}
然后,在创建 RecyclerView 适配器时,将该接口传递给适配器:
val adapter = MyAdapter(items, this)
recyclerView.adapter = adapter
最后,当用户单击 RecyclerView 中的项目时,该项目的单击事件将触发,并且您将通过导航控制器从 RecyclerView 导航到目标片段。
通过完成本文所述的步骤,您现在知道了如何从 RecyclerView 导航到片段 Kotlin。请注意,在实现时应根据您的特定应用需求进行修改,并采取其他步骤以确保正确功能。