如何使用NavigationView的适配器将项目添加到NavigationView?

时间:2015-07-28 09:31:38

标签: android android-support-library material-design android-design-library

如何使用适配器动态添加NavigationView(以编程方式)而不依赖于RecyclerView(即,只根据我存储在应用程序的SQLite数据库中的数据将项目附加到NavigationView)

我设法让物品进入清单。 现在我的XML是这样的:

<android.support.design.widget.NavigationView
    android:id="@+id/navigationview"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true">

        <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</android.support.design.widget.NavigationView>

在我的代码中包含实现此方法的方法:

public class NavigationAdapter extends RecyclerView.Adapter<NavigationAdapter ViewHolder> {
    final private Context mContext;
    private Cursor mCursor;

    public NavigationAdapter(Context context) {
        mContext = context;
    }

    @Override
    public NavigationAdapterViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        // Inflate list item view for NavigationView
    }

    @Override
    public void onBindViewHolder(NavigationAdapterViewHolder taskAdapterViewHolder, int position) {
        // Move cursor to correct position
        // Display text for list item in NavigationView 
    }

    @Override
    public int getItemCount() {
        // Return count
    }

    public class NavigationAdapterViewHolder extends RecyclerView.ViewHolder {

        public NavigationAdapterViewHolder(View view) {
            // ViewHolder pattern for RecyclerView
        }
    }
}

但是,由于我使用了RecyclerView,因此我不再像NavigationView那样获得以下好处:

  • 点击处理程序
  • 添加非动态项目(即我总是想要显示的菜单项目)
  • 适当的填充+菜单项的材质设计实现

这是因为我直接使用RecyclerView而不是NavigationView(我想做),这意味着我需要将所有材质样式重新应用到菜单项。

有没有办法可以使用适配器将项目添加到NavigationView,让设计支持库处理所有样式和点击处理程序?

0 个答案:

没有答案