Проблема с расширяемым списком и древовидной картой - PullRequest
0 голосов
/ 30 октября 2019

Я хотел бы создать расширяемый список, динамически заполняемый на панели навигации. Я использую древовидную карту для управления данными, но она работает только тогда, когда у меня одинаковое количество меню и подменю. Если нет, то не отображаются все подменю. Например, если у меня есть 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());



}
...