Привет в приведенном ниже коде описывает расширяемый просмотр списка с помощью панели навигации.Теперь в приведенном ниже меню содержится 7 родительских меню, в этом меню у меня есть дочерний элемент (подменю)
Теперь, когда мы нажимаем 1 родительское меню, оно пересекается.Как перенаправить на определенный фрагмент, когда мы нажимаем на любой дочерний элемент.
Может ли кто-нибудь помочь, пожалуйста.
например:
предположим, если я нажму Добавить дочернее меню зданияхочу перейти к конкретному фрагменту. Как и у оставшегося потомка.
NavigationViewActivity.java:
public class NavigationViewActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
ExpandableListAdapter mMenuAdapter;
ExpandableListView expandableList;
List<ExpandedMenuModel> listDataHeader;
HashMap<ExpandedMenuModel, List<String>> listDataChild;
private static final int CONTENT_VIEW_ID = 10101010;
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(activity_navigation_view);
final ActionBar ab = getSupportActionBar();
/* to set the menu icon image*/
ab.setHomeAsUpIndicator(android.R.drawable.ic_menu_add);
ab.setDisplayHomeAsUpEnabled(true);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
expandableList = (ExpandableListView) findViewById(R.id.navigationmenu);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
setupDrawerContent(navigationView);
}
prepareListData();
mMenuAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild, expandableList);
// setting list adapter
expandableList.setAdapter(mMenuAdapter);
expandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(NavigationViewActivity.this,"Bus Ticket",Toast.LENGTH_SHORT).show();
switch (groupPosition) {
case 1:
switch (childPosition) {
case 0:
android.support.v4.app.FragmentTransaction ft=getSupportFragmentManager ().beginTransaction ();
ft.replace (R.id.container_toolbar,new HomeFragement ());
ft.commit ();
// Intent intent = new Intent(getApplicationContext (), HomeFragement.class);
//startActivity(intent);
Toast.makeText(NavigationViewActivity.this,"Bus Ticket",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(NavigationViewActivity.this,"Flight Ticket",Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(NavigationViewActivity.this,"Electricity",Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(NavigationViewActivity.this,"Water",Toast.LENGTH_SHORT).show();
break;
}
break;
default:
break;
}
return false;
}
});
expandableList.setOnGroupClickListener(new android.widget.ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Toast.makeText(getApplicationContext(), "OFFere ", Toast.LENGTH_SHORT).show();
System.out.println("Here we go");
switch (groupPosition) {
case 1:
//Toast.makeText(getApplicationContext(), "OFFere ", Toast.LENGTH_SHORT).show();
/* Intent intent = new Intent(MainActivity.this, Secondactivity.class);
startActivity(intent);*/
break;
case 2:
Toast.makeText(getApplicationContext(), "Accounts ", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(getApplicationContext(), "Settings ", Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(getApplicationContext(),"Help",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return false;
}
});
}
private void prepareListData() {
listDataHeader = new ArrayList<ExpandedMenuModel> ();
listDataChild = new HashMap<ExpandedMenuModel, List<String>>();
ExpandedMenuModel item1 = new ExpandedMenuModel();
item1.setIconName("HOME");
item1.setIconImg(R.drawable.home);
listDataHeader.add(item1);
ExpandedMenuModel item2 = new ExpandedMenuModel();
item2.setIconName("BUILDING MANAGEMENT");
item2.setIconImg(R.drawable.building_floor_room);
// Adding data header
listDataHeader.add(item2);
ExpandedMenuModel item3 = new ExpandedMenuModel();
item3.setIconName("LIGHT MANAGEMENT");
item3.setIconImg(R.drawable.building_floor_room);
listDataHeader.add(item3);
ExpandedMenuModel item4 = new ExpandedMenuModel();
item4.setIconName("SCHEDULING");
item4.setIconImg(R.drawable.building_floor_room);
listDataHeader.add(item4);
ExpandedMenuModel item5 = new ExpandedMenuModel();
item5.setIconName("USER MANAGEMENT");
item5.setIconImg(R.drawable.username);
listDataHeader.add(item5);
ExpandedMenuModel item6 = new ExpandedMenuModel();
item6.setIconName("ENERGY MANAGEMENT");
item6.setIconImg(R.drawable.username);
listDataHeader.add(item6);
ExpandedMenuModel item7 = new ExpandedMenuModel();
item7.setIconName("LOGOUT");
item7.setIconImg(R.drawable.username);
listDataHeader.add(item7);
// Adding child data
List<String> heading1 = new ArrayList<String>();
heading1.add("Add Building");
heading1.add("Add Floor");
heading1.add("Grouping Luminaries");
List<String> heading2 = new ArrayList<String>();
heading2.add("Add Luminaries");
heading2.add("Assign Luminaries");
heading2.add("Grouping Luminaries");
List<String> heading3 = new ArrayList<String>();
heading3.add("Add Schedules");
heading3.add("View Schedules");
List<String> heading4 = new ArrayList<String>();
heading4.add("Manage Operator");
heading4.add("Manage Employee");
//listDataHeader.get (item1.toString ());
// listDataHeader.add (item1);
//this.listDataHeader.get (0);
// listDataChild.put(listDataHeader.get(0), item1.getIconName ().indexOf (0));
listDataChild.put(listDataHeader.get(1), heading1);// Header, Child data
listDataChild.put(listDataHeader.get(2), heading2);
listDataChild.put(listDataHeader.get(3), heading3);
listDataChild.put(listDataHeader.get(4), heading4);
// listDataHeader.get (5);
// listDataHeader.get ()
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
private AdapterView.OnItemClickListener mDrawerItemClickedListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
}
};
private DrawerLayout.DrawerListener mDrawerListener = new DrawerLayout.DrawerListener () {
@Override
public void onDrawerStateChanged(int status) {
}
@Override
public void onDrawerSlide(View view, float slideArg) {
}
@Override
public void onDrawerOpened(View view) {
}
@Override
public void onDrawerClosed(View view) {
}
};
private void setupDrawerContent(NavigationView navigationView) {
//revision: this don't works, use setOnChildClickListener() and setOnGroupClickListener() above instead
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});
}
}