Добавить onclick для просмотра списка в меню навигации - PullRequest
0 голосов
/ 24 марта 2020

enter image description here

Я добавил 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
    }

строки. 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>

Может кто-нибудь сказать мне, как реализовать при щелчке на этом элементе массива

1 Ответ

0 голосов
/ 24 марта 2020

Я думаю, что вам нужно использовать NavigationView и menu.xml, который связан с, вам не нужно использовать RecyclerView внутри NavigationView

Вот краткий Учебное пособие, которое может помочь вам настроить это, оно также включает onClick: https://www.journaldev.com/12648/navigationview-android

РЕДАКТИРОВАТЬ: Если вы намерены использовать RecyclerView, вы должны go в вашем Адаптер и установить 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);
    }
}

...