Как выделить значения осей X и Y из MPChart Android на ползунке диапазона поиска

#android #mpandroidchart #android-graphview #rangeslider

Вопрос:

введите описание изображения здесьЯ пытался создать Cubic Line диаграмму, используя MPChart библиотеку внутри моего макета переработчика из моего класса адаптера. Внутри макета моего класса адаптера у меня есть line Chart и range Slider , где line Chart он находится сверху Range Slider . В настоящее Line Data время он заполнен красным цветом . В соответствии с моим требованием, я должен получить X ось, Y ось min и max значения при поиске Range Slider и отменить выбор отмеченной позиции на графике с отмененным цветом.Я смог сделать первое изображение (перед поиском). Как мы можем реализовать второй образ?

Пример Xml-Кода:

 lt;?xml version="1.0" encoding="utf-8"?gt; lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:orientation="vertical"  android:translationZ="15dp"gt;   lt;LinearLayout  android:id="@ id/store_root_cont_layout"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:orientation="vertical"gt;   lt;LinearLayout  android:id="@ id/complete_root_lyt"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:gravity="center"  android:orientation="vertical"gt;   lt;RelativeLayout  android:id="@ id/filter_root_img_ly"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_marginTop="30dp"  android:gravity="center"  android:visibility="visible"gt;   lt;com.github.mikephil.charting.charts.LineChart  android:id="@ id/chart1"  android:layout_width="match_parent"  android:layout_height="wrap_content" /gt;   lt;RelativeLayout  android:id="@ id/filter_enable_root_lyt"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_marginTop="13dp"  android:gravity="center_vertical"gt;   lt;com.google.android.material.slider.RangeSlider  android:id="@ id/rangeSlider"  style="@style/Theme.rySampleApp"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:progressDrawable="@drawable/progress_layout_bg"  android:stepSize="1"  android:theme="@style/Theme.trySampleApp"  android:valueFrom="0.0"  android:valueTo="100.0"  app:labelBehavior="gone"  app:thumbColor="#01b0c3"  app:tickVisible="false"  app:values="@array/initial_slider_values" /gt;  lt;/RelativeLayoutgt;    lt;/RelativeLayoutgt;   lt;RelativeLayout  android:layout_width="match_parent"  android:layout_height="match_parent"gt;   lt;TextView  android:id="@ id/taste_OnStartTrackingTouch"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_marginLeft="9dp"  android:ellipsize="end"  android:maxLines="1"  android:text="$0"  android:textColor="@color/black"  android:textSize="16sp"gt;   lt;/TextViewgt;   lt;TextView  android:id="@ id/taste_OnStopTrackingTouch"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_alignParentRight="true"  android:ellipsize="end"  android:maxLines="1"  android:text="$100 "  android:textColor="@color/black"  android:textSize="16sp"gt;   lt;/TextViewgt;  lt;/RelativeLayoutgt;   lt;LinearLayout  android:id="@ id/location_show_lyt_root_Search"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_margin="20dp"  android:orientation="vertical"  android:visibility="gone"gt;   lt;androidx.appcompat.widget.SearchView  android:id="@ id/store_Search"  android:layout_width="match_parent"  android:layout_height="40dp"  android:background="@drawable/filter_search_bar_bg_lyt"  app:iconifiedByDefault="false"  app:queryHint="Search"gt;   lt;/androidx.appcompat.widget.SearchViewgt;   lt;ScrollView  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_margin="5dp"gt;   lt;androidx.recyclerview.widget.RecyclerView  android:id="@ id/filter_store_Recycler_lyt"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_marginTop="10dp"  android:theme="@style/Theme.trySampleApp"gt;   lt;/androidx.recyclerview.widget.RecyclerViewgt;   lt;/ScrollViewgt;  lt;/LinearLayoutgt;   lt;/LinearLayoutgt;    lt;/LinearLayoutgt; lt;/LinearLayoutgt;  

код адаптера:

 @Override  public void onBindViewHolder(@NonNull @NotNull RecyclerView.ViewHolder holder, int position) {   viewHolderOne = (ViewHolder) holder;       viewHolderOne.chart.getDescription().setEnabled(false);  viewHolderOne.chart.setDrawGridBackground(false);   viewHolderOne.chart.setHighlightPerDragEnabled(false);  viewHolderOne.chart.getXAxis().setDrawAxisLine(false);  viewHolderOne.chart.getXAxis().setDrawGridLines(false);  viewHolderOne.chart.getAxisLeft().setDrawGridLines(false);  viewHolderOne.chart.getAxisRight().setDrawGridLines(false);  viewHolderOne.chart.getAxisRight().setDrawLimitLinesBehindData(false);  viewHolderOne.chart.getAxisLeft().setDrawLabels(false);  viewHolderOne.chart.getAxisRight().setDrawLabels(false);  viewHolderOne.chart.getXAxis().setDrawLabels(false);  viewHolderOne.chart.getXAxis().setDrawLimitLinesBehindData(false);  viewHolderOne.chart.getLegend().setEnabled(false);   lineDataSet = new LineDataSet(setDataValues(values),"Data set 1");  lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);  lineDataSet.setDrawFilled(true);  lineDataSet.setDrawValues(false);  lineDataSet.setFillAlpha(100);  lineDataSet.setFillColor(ContextCompat.getColor(context,R.color.green));  lineDataSet.setDrawCircles(false);  lineDataSet.setCubicIntensity(0.1f);  lineDataSet.setDrawHorizontalHighlightIndicator(false);  lineDataSet.setDrawVerticalHighlightIndicator(false);     ArrayListlt;ILineDataSetgt; dataSets = new ArrayListlt;gt;();  dataSets.add(lineDataSet);   LineData data = new LineData(dataSets);   data.setValueFormatter(new DefaultValueFormatter(0));  viewHolderOne.chart.setData(data);  viewHolderOne.chart.invalidate();   viewHolderOne.filterTasteRangeSlider.addOnChangeListener((slider, value, fromUser) -gt; {   Log.d("TasteRangleSlider","Seeked");  sliderSeekValueStart = viewHolderOne.filterTasteRangeSlider.getValues().get(0);  sliderSeekValueStop = viewHolderOne.filterTasteRangeSlider.getValues().get(1);  valuesFromInt = Math.round(viewHolderOne.filterTasteRangeSlider.getValues().get(0));  valuesToInt = Math.round(viewHolderOne.filterTasteRangeSlider.getValues().get(1));      LineDataSet lineDataSetSecond = new LineDataSet(setSeekDataValues(sliderSeekValueStart,sliderSeekValueStop),"Data set 2");  lineDataSetSecond.setMode(LineDataSet.Mode.CUBIC_BEZIER);  lineDataSetSecond.setDrawFilled(true);  lineDataSetSecond.setDrawValues(false);  lineDataSetSecond.setFillAlpha(100);  lineDataSetSecond.setFillColor(ContextCompat.getColor(context,R.color.red));  lineDataSetSecond.setDrawCircles(false);  lineDataSetSecond.setCubicIntensity(0.1f);  lineDataSetSecond.setDrawHorizontalHighlightIndicator(false);  lineDataSetSecond.setDrawVerticalHighlightIndicator(false);     ArrayListlt;ILineDataSetgt; dataSetFirst = new ArrayListlt;gt;();  dataSetFirst.add(lineDataSetSecond);   LineData dataFirst = new LineData(dataSetFirst);   dataFirst.setValueFormatter(new DefaultValueFormatter(0));  viewHolderOne.chart.setData(dataFirst);  viewHolderOne.chart.invalidate();    });   }     private ArrayListlt;Entrygt; setDataValues(Listlt;TasteGraphValuegt; values) {  setValues to Chart::  ArrayListlt;Entrygt; dataVal = new ArrayListlt;Entrygt;();  for (int i = 0; i lt; values.size(); i  ) {   double xVal = values.get(i).getX();  Double D = Double.valueOf(xVal);  // Double D = Double.valueOf(x);  xValConverted = D.floatValue();  yVal = values.get(i).getY();  //dataVal.add(new Entry(xValConverted, yVal));  dataVal.add(new Entry(xValConverted, yVal));  }  return dataVal; }  

Комментарии:

1. довольно срочное требование . Есть какие-либо предложения по вышеуказанному требованию???