private void setChartData(ClimbingArea ClimbingArea) { HashMap<Integer, Integer> difficultyMap = new HashMap<>(); for (int i = AppConstants.MIN_UIAA_LEVEL; i <= AppConstants.MAX_UIAA_LEVEL; ++i) { difficultyMap.put(i, 0); } for (ClimbingRoute route : ClimbingArea.getRoutes()) { String difficulty = route.getUIAARank(); int routeDifficulty = Utils.trimUIAARank(difficulty); if (difficultyMap.containsKey(routeDifficulty)) { difficultyMap.put(routeDifficulty, difficultyMap.get(routeDifficulty) + 1); } } ArrayList<BarEntry> routeDifficulties = new ArrayList<BarEntry>(); String[] xVals = new String[difficultyMap.size()]; List<Integer> orderedList = new ArrayList<>(difficultyMap.keySet()); Collections.sort(orderedList); int indexCounter = 0; for (Integer difficulty : orderedList) { xVals[indexCounter] = difficulty + ""; // BarEntry entry = new BarEntry(difficultyMap.get(difficulty), indexCounter++ , difficulty // +""); BarEntry entry = new BarEntry(difficulty, difficultyMap.get(difficulty), indexCounter++); routeDifficulties.add(entry); } mChart.getXAxis().setLabelCount(xVals.length); BarDataSet set1 = new BarDataSet(routeDifficulties, "Schwierigkeiten"); // set1.setColor(getResources().getColor(R.color.primary_700)); int[] uiaaChartColors = new int[AppConstants.UIAA_CHART_COLORS.length]; for (int i = 0; i < uiaaChartColors.length; ++i) { uiaaChartColors[i] = getResources().getColor(AppConstants.UIAA_CHART_COLORS[i]); } set1.setColors(uiaaChartColors); ArrayList<IBarDataSet> dataSets = new ArrayList<>(); dataSets.add(set1); BarData data = new BarData(dataSets); data.setValueFormatter(new MyValueFormatter()); data.setValueTextSize(10f); mChart.setData(data); mChart.animateX(1000); mChart.animateY(1000); }
@SuppressLint("NewApi") @Override public void onValueSelected(Entry e, Highlight h) { int selectedDifficulty = (int) e.getX(); clearSelectedRoutes(); for (ClimbingRoute route : selectedArea.getRoutes()) { if (Utils.trimUIAARank(route.getUIAARank()) == selectedDifficulty) selectedRoutes.add(route); } // recyclerViewAdapter.notifyItemRangeChanged(0, selectedRoutes.size()); recyclerViewAdapter.notifyItemRangeRemoved(0, selectedArea.getRoutes().size()); recList.invalidate(); if (selectedRoutes.isEmpty()) onNothingSelected(); }
@Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { // Replace the result Cursor displayed by the Cursor Adapter with // the new result set. // This handler is not synchonrized with the UI thread, so you // will need to synchronize it before modiyfing any UI elements // directly. switch (loader.getId()) { case URL_ROUTES_LOADER_ALL: while (data.moveToNext()) { int climbingRouteIdColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_ID); int climbingRouteNameColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_NAME); int climbingRouteLatitudeColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_LATITUDE); int climbingRouteLongitudeColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_LONGITUDE); int climbingRouteRankingColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_RANKING); int climbingRouteImageColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_IMAGE_URL); int climbingRouteDifficultyColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_UIAA); int climbingRouteFollowClimbColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_FOLLOW_CLIMB_ACCOMPLISHED); int climbingRouteLeadingClimbColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_LEADING_CLIMB_ACCOMPLISHED); int climbingRouteRouteAccomplishedColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_ROUTE_ACCOMPLISHED); int climbingRouteClimbingAreaColumnIndex = data.getColumnIndex(ClimbingDBHelper.COLUMN_ROUTES_CLIMBINGAREA_ID); int id = data.getInt(climbingRouteIdColumnIndex); String name = data.getString(climbingRouteNameColumnIndex); float latitude = data.getFloat(climbingRouteLatitudeColumnIndex); float longitude = data.getFloat(climbingRouteLongitudeColumnIndex); float ranking = data.getFloat(climbingRouteRankingColumnIndex); String difficulty = data.getString(climbingRouteDifficultyColumnIndex); String imageUrl = data.getString(climbingRouteImageColumnIndex); boolean followClimbAccomplished = data.getInt(climbingRouteFollowClimbColumnIndex) > 0; boolean leadClimbAccomplished = data.getInt(climbingRouteLeadingClimbColumnIndex) > 0; boolean routeAccomplished = data.getInt(climbingRouteRouteAccomplishedColumnIndex) > 0; int climbingArea = data.getInt(climbingRouteClimbingAreaColumnIndex); ClimbingRoute climbingRoute = new ClimbingRoute(); climbingRoute.setId(id); climbingRoute.setName(name); climbingRoute.setLatitude(latitude); climbingRoute.setLongitude(longitude); climbingRoute.setRanking(ranking); climbingRoute.setDrawableUrl(imageUrl); climbingRoute.setUIAARank(difficulty); climbingRoute.setFollowClimbAccomplished(followClimbAccomplished); climbingRoute.setLeadClimbAccomplished(leadClimbAccomplished); climbingRoute.setRouteAccomplished(routeAccomplished); Log.d(TAG, "Climbing Area loaded: " + climbingArea); selectedArea.getRoutes().add(climbingRoute); } break; default: } int size = selectedRoutes.size(); clearSelectedRoutes(); selectedRoutes.addAll(selectedArea.getRoutes()); recyclerViewAdapter.notifyItemRangeRemoved(0, size); setChartData(selectedArea); setShareIntent(selectedArea); // TextView sumRoutes = (TextView) findViewById(R.id.textView_sum_routes); // sumRoutes.setText(selectedArea.getRoutes().size() + ""); }