Fixed item selection in menu when selecting a course

This commit is contained in:
Caesar2011
2018-07-08 18:34:03 +02:00
parent cdcbdd74b6
commit 0f0efa4d57
2 changed files with 28 additions and 15 deletions

View File

@@ -40,6 +40,7 @@ public class MainActivity extends AppCompatActivity
private GoogleAuth mGoogleAuth;
private KVV mKVV;
private Logger log = new Logger(this);
private NavigationView mNavigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -54,8 +55,8 @@ public class MainActivity extends AppCompatActivity
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
mNavigationView = findViewById(R.id.nav_view);
mNavigationView.setNavigationItemSelectedListener(this);
/*try {
(new MensaPlan(getApplicationContext())).request(0, new Date());
@@ -125,6 +126,8 @@ public class MainActivity extends AppCompatActivity
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//log.d("ITEM SELECTED", item.getTitle());
// Handle navigation view item clicks here.
int id = item.getItemId();
@@ -156,6 +159,14 @@ public class MainActivity extends AppCompatActivity
DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
int size = mNavigationView.getMenu().size();
for (int k = 0; k < size; k++) {
//mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+itemPosition);
mNavigationView.getMenu().getItem(k).setChecked(false);
}
item.setChecked(true);
return true;
}
@@ -201,13 +212,12 @@ public class MainActivity extends AppCompatActivity
fragmentTransaction.commit();
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
NavigationView navigationView = findViewById(R.id.nav_view);
View header = navigationView.getHeaderView(0);
View header = mNavigationView.getHeaderView(0);
header.findViewById(R.id.imageView).setVisibility(View.GONE);
header.findViewById(R.id.login_name).setVisibility(View.GONE);
header.findViewById(R.id.login_page).setVisibility(View.VISIBLE);
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.activity_main_drawer);
mNavigationView.getMenu().clear();
mNavigationView.inflateMenu(R.menu.activity_main_drawer);
}
private void toLoginState(String username) {
@@ -216,21 +226,20 @@ public class MainActivity extends AppCompatActivity
fragmentTransaction.commit();
findViewById(R.id.app_bar_layout).setVisibility(View.VISIBLE);
final NavigationView navigationView = findViewById(R.id.nav_view);
View header = navigationView.getHeaderView(0);
View header = mNavigationView.getHeaderView(0);
header.findViewById(R.id.imageView).setVisibility(View.VISIBLE);
header.findViewById(R.id.login_name).setVisibility(View.VISIBLE);
header.findViewById(R.id.login_page).setVisibility(View.GONE);
navigationView.getMenu().clear();
navigationView.inflateMenu(R.menu.activity_main_drawer_login);
navigationView.setCheckedItem(R.id.nav_modules);
mNavigationView.getMenu().clear();
mNavigationView.inflateMenu(R.menu.activity_main_drawer_login);
mNavigationView.setCheckedItem(R.id.nav_modules);
getKVV().getModuleList(success -> {
log.d("Modules.get", success.size());
//SubMenu moduleMenu = navigationView.getMenu().findItem(R.id.nav_modules).getSubMenu();
int i = 0;
for (Iterator<Modules.Module> it = success.latestSemesterIterator(); it.hasNext(); ) {
Modules.Module module = it.next();
MenuItem menuItem = navigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.title);
MenuItem menuItem = mNavigationView.getMenu().add(Menu.NONE, Menu.NONE, 101 + i, module.title);
final int finalI = i;
menuItem.setOnMenuItemClickListener(item -> {
onModulesFragmentInteraction(finalI);
@@ -259,11 +268,17 @@ public class MainActivity extends AppCompatActivity
@Override
public void onModulesFragmentInteraction(final int itemPosition) {
log.d("Item clicked", itemPosition);
getKVV().getModuleList(success -> log.d(success.get(itemPosition).title), error -> log.e(error));
//getKVV().getModuleList(success -> log.d(success.get(itemPosition).title), error -> log.e(error));
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragcontainer, ModDetailFragment.newInstance(itemPosition));
fragmentTransaction.commit();
int size = mNavigationView.getMenu().size();
for (int k = 0; k < size; k++) {
mNavigationView.getMenu().getItem(k).setChecked(mNavigationView.getMenu().getItem(k).getOrder() == 101+itemPosition);
//mNavigationView.getMenu().getItem(k).setChecked(false);
}
}
@Override

View File

@@ -59,9 +59,7 @@ public class KVVModuleList extends HTTPService {
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
log.d("getModuleList");
queueModuleDetails.add("list", () -> {
log.d("getModuleList start", forceRefresh);
if (this.moduleList != null && !forceRefresh) {
callback.onResponse(this.moduleList);
queueModuleDetails.next("list");