可能重复,
Navigation Drawer RecyclerView Items Click to an Activity
面对同样的问题。请帮助解决这个问题。
我有一个导航抽屉,里面有回收者视图。我在适配器中设置了onClickListener。 现在我在点击任何抽屉项目后尝试打开一个片段。
编辑:
我正在使用Drawerlayout和ActionBarDrawerToggle在我的actionbaractivity中有导航抽屉。 我正在使用回收站视图来填充导航抽屉中的数据。在recyclerview适配器中,我可以使用onClickListener。
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
@Override
public void onClick(View v) {
}
}
我可以在onclick中打开一个活动,但我想在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);
但是从各方面都失败了。
答案 0 :(得分:0)
对于片段事务,您可能希望在活动中而不是在适配器中处理导航抽屉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
答案 1 :(得分:0)
在适配器中输入:
@Override
public void onClick(View v) {
MainActivity.onClickedMenu(getPosition());
}
在您的MainActivity中输入:
public static void onClickedMenu(int id){
// Do what you want
}
简单是最好的。