Я хотел бы создать расширяемый список, динамически заполняемый на панели навигации. Я использую древовидную карту для управления данными, но она работает только тогда, когда у меня одинаковое количество меню и подменю. Если нет, то не отображаются все подменю. Например, если у меня есть 3 меню и 6 подменю, будут показаны только 3 меню и 3 подменю. Вот мои методы:
private void setupDrawer() {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close)
{
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getSupportActionBar().setTitle("MiningTag");
invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getSupportActionBar().setTitle(mActivityTitle);
invalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
private void addDrawersItem() {
adapter=new CustomExpandableListAdapter(this,lstTitle,lstChild);
expandableListView.setAdapter(adapter);
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
getSupportActionBar().setTitle(lstTitle.get(groupPosition).toString());
}
});
expandableListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
getSupportActionBar().setTitle("MiningTag");
}
});
expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
String selectedItem = ((List)(lstChild.get(lstTitle.get(groupPosition))))
.get(childPosition).toString();
getSupportActionBar().setTitle(selectedItem);
if(items[0].equals(lstTitle.get(groupPosition)))
navigationManager.showFragment(selectedItem);
else
throw new IllegalArgumentException("Not Supported Fragment");
mDrawerLayout.closeDrawer(GravityCompat.START);
return false;
}
});
}
private void genData() throws IOException {
List<String> title = Arrays.asList("Mina El Teniente");
//List<String> childItem = Arrays.asList("Pilar","Reno");
List<String> childItem = new ArrayList<String>();
String linea;
InputStream is = this.getResources().openRawResource(R.raw.data);
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
if(is!=null){
while((linea=reader.readLine())!=null){
childItem.add(linea);
}
}
is.close();
Toast.makeText(this, "carga: "+childItem.size(), Toast.LENGTH_LONG).show();
lstChild=new TreeMap<>();
lstChild.put(title.get(0),childItem);
lstTitle = new ArrayList<>(lstChild.keySet());
}