AnyChart / AnyChart-Android

AnyChart Android Chart is an amazing data visualization library for easily creating interactive charts in Android apps. It runs on API 19+ (Android 4.4) and features dozens of built-in chart types.
2.29k stars 369 forks source link

Performance issue showing White space in recyclerview android. #240

Open umerharris opened 2 years ago

umerharris commented 2 years ago

I'm using range chart in recyclerView, But some time it is showing white space and some time it is working fine. Can you guide me how can properly load the chart in recyclerview every time?
Screenshot_20211210_155505

//initialize this one time in view holder anyChartView = root.findViewById(R.id.any_chart_view); linearGauge = AnyChart.linear();

//assign values in onBindViewHolder function

holder.linearGauge.data(new SingleValueDataSet(new Double[]{data})); holder.linearGauge.layout(Layout.HORIZONTAL);

            holder.linearGauge.credits().enabled(false);
            holder.linearGauge.tooltip(false);
            holder.linearGauge.interactivity().selectionMode(SelectionMode.NONE);

            holder.linearGauge.scaleBar(0)
                    .width("10%")
                    .from(min)
                    .to(minNorm)
                    .fill("#2a91f1");

            holder.linearGauge.scaleBar(1)
                    .width("10%")
                    .from(minNorm)
                    .to(maxNorm)
                    .fill("#4fe61e");

            holder.linearGauge.scaleBar(2)
                    .width("10%")
                    .from(maxNorm)
                    .to(max)
                    .fill("#2a91f1");

            holder.linearGauge.marker(0)
                    .type(MarkerType.TRIANGLE_DOWN)
                    .hatchFill(false)
                    .color(markerColor)
                    .width("15%")
                    .offset("-17.0%")
                    .zIndex(10);

            holder.linearGauge.marker(0).labels()
                    .enabled(true)
                    .fontColor(markerColor)
                    .width("20%")
                    .offsetX(24)
                    .offsetY(-30);

            holder.linearGauge.scale()
                    .minimum(min)
                    .maximum(max);

            holder.linearGauge.axis(0)
                    .width("1%")
                    .offset("10%")
                    .scale(holder.linearGauge.scale())
                    .orientation(Orientation.BOTTOM)
                    .labels("bottom");

            holder.linearGauge.padding(0, 20, 0, 20);
            if(holder.anyChartView.getTag().equals("false")){
                holder.anyChartView.setChart(holder.linearGauge);
            }
            holder.anyChartView.setOnRenderedListener(new AnyChartView.OnRenderedListener() {
                @Override
                public void onRendered() {
                    holder.anyChartView.setTag("true");
                    holder.linearGauge.autoRedraw();
                }
            }); 
Shestac92 commented 2 years ago

@umerharris At the moment we can guarantee expected behavior and normal performance in the single view just like it is described in the wiki guide.