我在导航视图中添加了RecyclerView
。然后将listArray添加到RecyclerView
中。但是我无法为该onclick
项目实现RecyclerView
监听器。实现OnNavigationItemSelectedListener
是正确的吗?
请告诉我如何实现onclicklistener
。
这是我的代码。
在MainActivity
中,我要像这样添加字符串列表数组
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
val recyclerview = findViewById<RecyclerView>(R.id.menuitems)
recyclerview.layoutManager =
LinearLayoutManager(this.applicationContext, RecyclerView.VERTICAL, false)
val names = Arrays.asList(*resources.getStringArray(R.array.dashboard_menu))
val adapter = sidemenuAdapter(names)
recyclerview.adapter = adapter
布局文件
<com.google.android.material.navigation.NavigationView
android:id="@+id/sidenavi"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
android:fitsSystemWindows="true"
app:headerLayout="@layout/sidenavi_headerlayout"
app:itemTextAppearance="@style/MyCustomTextAppearance"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.022"
>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/menuitems"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="120dp"
android:layout_marginBottom="50dp" />
</com.google.android.material.navigation.NavigationView>
在onNavigationclicklistener中,我尝试过这样,但不起作用
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when(item.order){
2-> startActivity(Intent(this@MainActivity, TimetableActivity::class.java))
}
return true
}
strings.xml
<string-array name="dashboard_menu">
<item>Home</item>
<item>Class Time Table</item>
<item>Leave Request</item>
<item>Attendance Information</item>
<item>Exam result</item>
<item>Visual Tour</item>
<item>About </item>
<item>Careers</item>
<item>Events</item>
<item>Previews</item>
<item>General Enquiry</item>
<item>Live Chat</item>
<item>FAQ\'s</item>
<item> Club / Membership</item>
<item>Contact Us</item>
<item>Logout</item>
</string-array>
谁能告诉我如何单击该数组项
答案 0 :(得分:0)
我认为您需要使用NavigationView
和与之关联的menu.xml
,而无需在RecyclerView
内使用NavigationView
>
这是一个简短的教程,可以帮助您进行设置,其中还包括onClick
:https://www.journaldev.com/12648/navigationview-android
编辑:如果您承诺使用RecyclerView
,则应进入适配器并设置onClickListener
。
public static class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private String mItem;
private TextView mTextView;
public ViewHolder(View view) {
super(view);
view.setOnClickListener(this);
mTextView = (TextView) view;
}
public void setItem(String item) {
mItem = item;
mTextView.setText(item);
}
@Override
public void onClick(View view) {
Log.d(TAG, "onClick " + getPosition() + " " + mItem);
}
}