我通过在use Sort::Key::Natural qw( natsort );
my @sorted = natsort @unsorted;
中添加NavigationView
为ListView
创建菜单。然后,我进行了自定义NavigationView
,在其中添加了每个菜单项。每个菜单项都有附加的自定义xml布局。 ArrayAdapter
触发函数使用此布局的根作为参数传递给菜单项类。
一切正常,但是当我单击项目时,仅当我双击时它不会触发此功能。为什么会发生这种情况?
代码: 这是菜单项的类(多个不同的项正在扩展该类) 并非每个菜单项都有单击事件(例如节标题)
onClickListener
在某些菜单项的abstract class DrawerItem(var itemName: String, var imgResID: Int, var onClick: (() -> Unit)? = null)
函数内,这是onClick
的调用方式:
getView
NavigationView的XML布局:
val root: LinearLayout = view.findViewById(R.id.root)
root.setOnClickListener {
menuItem.onClick?.invoke()
}
一种菜单项类型的布局:
<com.google.android.material.navigation.NavigationView
android:id="@+id/drawer_menu"
android:layout_gravity="left"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/navigation_header_container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
<ListView
android:id="@+id/lst_menu_items"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</com.google.android.material.navigation.NavigationView>