"Facing the same issue" 导航抽屉中的回收站视图

"Facing the same issue" Recycler View in Navigation Drawer

可能重复,

Navigation Drawer RecyclerView Items Click to an Activity

面临同样的问题。请帮助解决这个问题。

我有一个导航抽屉,里面有回收站视图。我在适配器中设置了 onClickListener。 现在我试图在点击任何抽屉项目后打开一个片段。

编辑:

我正在使用 Drawerlayout 和 ActionBarDrawerToggle 在我的操作栏中添加导航抽屉activity。 我正在使用回收器视图来填充导航抽屉中的数据。在 recyclerview 适配器中,我可以放置 onClickListener。

public static class ViewHolder extends RecyclerView.ViewHolder       implements View.OnClickListener 
{ 
 @Override
        public void onClick(View v) {

        }
}

我可以在 onclick 中打开一个 activity,但我想在 onclick 中打开一个片段。

使用 ,

FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction()
                   .replace(R.id.content_frame, fragment)
                   .commit();

    // Highlight the selected item, update the title, and close the drawer
    mDrawerList.setItemChecked(position, true);
    setTitle(mPlanetTitles[position]);
    mDrawerLayout.closeDrawer(mDrawerList);

但从各方面都失败了。

对于片段事务,您可能希望在 activity 而不是适配器中处理导航抽屉 RecyclerView 的点击:

final GestureDetector mGestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return true;
    }

});

mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener(){

    @Override
    public boolean onInterceptTouchEvent(RecyclerView recyclerView,MotionEvent motionEvent) {
        View child = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY());


        if (child != null && mGestureDetector.onTouchEvent(motionEvent)) {
            drawer.closeDrawers();
            Toast.makeText(MainActivity.this,"The Item Clicked is: "+recyclerView.getChildPosition(child),Toast.LENGTH_SHORT).show();
            return true;
        }

        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView recyclerView,MotionEvent motionEvent){

    }
});

有关进一步的说明和代码,请参阅本教程: http://www.android4devs.com/2015/01/recycler-view-handling-onitemtouch-for.html

在你的适配器中放这个:

@Override

public void onClick(View v) {

MainActivity.onClickedMenu(getPosition());

}

在您的 MainActivity 中输入:

public static void onClickedMenu(int id){
// Do what you want 

}

简单的是最好的。