Android 导航抽屉 - Hide/Show 列表项
Android Navigation Drawer - Hide/Show list item
我有一个 class 定义导航抽屉的项目列表,我希望根据特定事件隐藏或显示其中的一些项目。
下面是定义项目列表的class:
public class Config {
public static List<NavItem> configuration() {
List<NavItem> i = new ArrayList<NavItem>();
//DONT MODIFY ABOVE THIS LINE
i.add(new NavItem("Item01", R.drawable.ic_action_favorite, NavItem.SECTION));
i.add(new NavItem("Item02", R.drawable.ic_details, NavItem.ITEM, HomeFragment.class, null));
i.add(new NavItem("Item03", R.drawable.ic_vistoria_blue, NavItem.ITEM, VistoriaActivity.class));
i.add(new NavItem("Item04", R.drawable.ic_details, NavItem.ITEM, BotaoPanicoFragment.class, null));
i.add(new NavItem("Item05", R.drawable.ic_details, NavItem.ITEM, BotoeiraFragment.class, null));
i.add(new NavItem("Item06", R.drawable.ic_action_settings, NavItem.SECTION));
i.add(new NavItem("Item07", R.drawable.ic_action_favorite, NavItem.EXTRA, SyncImportFragment.class, null));
//DONT MODIFY BELOW THIS LINE
return i;
}
}
在我的片段中,我调用下面的命令来获取抽屉列表:
private List<NavItem> getConfiguration(){
if (null == mConfiguration){
mConfiguration = Config.configuration();
boolean newDrawer = getResources().getBoolean(R.bool.newdrawer);
if (newDrawer == true){
mConfiguration.add(0, new NavItem("Header", NavItem.TOP));
}
}
return mConfiguration;
}
谁能帮我在开头只显示 item01、item02 和 item03。然后是其他人?
谢谢。
您可以使用准备好的列表的子列表,如果抽屉是新的,则在您已经修改返回列表的同一位置实施此操作:
if (newDrawer == true){
mConfiguration = mConfiguration.sublist(0, 2);
mConfiguration.add(0, new NavItem("Header", NavItem.TOP));
} else {
//No changes needed, use direct result of configuration()
}
我假设稍后再次调用 getConfiguration(),然后进入 false 分支,导致返回在 configuration() 中生成的列表。
我有一个 class 定义导航抽屉的项目列表,我希望根据特定事件隐藏或显示其中的一些项目。
下面是定义项目列表的class:
public class Config {
public static List<NavItem> configuration() {
List<NavItem> i = new ArrayList<NavItem>();
//DONT MODIFY ABOVE THIS LINE
i.add(new NavItem("Item01", R.drawable.ic_action_favorite, NavItem.SECTION));
i.add(new NavItem("Item02", R.drawable.ic_details, NavItem.ITEM, HomeFragment.class, null));
i.add(new NavItem("Item03", R.drawable.ic_vistoria_blue, NavItem.ITEM, VistoriaActivity.class));
i.add(new NavItem("Item04", R.drawable.ic_details, NavItem.ITEM, BotaoPanicoFragment.class, null));
i.add(new NavItem("Item05", R.drawable.ic_details, NavItem.ITEM, BotoeiraFragment.class, null));
i.add(new NavItem("Item06", R.drawable.ic_action_settings, NavItem.SECTION));
i.add(new NavItem("Item07", R.drawable.ic_action_favorite, NavItem.EXTRA, SyncImportFragment.class, null));
//DONT MODIFY BELOW THIS LINE
return i;
}
}
在我的片段中,我调用下面的命令来获取抽屉列表:
private List<NavItem> getConfiguration(){
if (null == mConfiguration){
mConfiguration = Config.configuration();
boolean newDrawer = getResources().getBoolean(R.bool.newdrawer);
if (newDrawer == true){
mConfiguration.add(0, new NavItem("Header", NavItem.TOP));
}
}
return mConfiguration;
}
谁能帮我在开头只显示 item01、item02 和 item03。然后是其他人?
谢谢。
您可以使用准备好的列表的子列表,如果抽屉是新的,则在您已经修改返回列表的同一位置实施此操作:
if (newDrawer == true){
mConfiguration = mConfiguration.sublist(0, 2);
mConfiguration.add(0, new NavItem("Header", NavItem.TOP));
} else {
//No changes needed, use direct result of configuration()
}
我假设稍后再次调用 getConfiguration(),然后进入 false 分支,导致返回在 configuration() 中生成的列表。