"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
}
简单的是最好的。
可能重复,
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
}
简单的是最好的。