java - AnyChart 尝试显示 Activity 的 2 个折线图

标签 java android

嘿大家好,我正在尝试在 Activity 上显示 2 个折线图,当我更改代码以仅显示 1 个图表时,它可以工作,但是当我添加第二个图表时,仅显示第一个图表,而第一个图表消失了.

这是 Activity

公共(public)类DetailedFieldActivity扩展AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detailed_field);

    Intent intentData = getIntent();
    String FieldName = intentData.getStringExtra("field");

    setTitle(FieldName);


    prepareGraphTop();
    prepareGraphBot();
}

public void prepareGraphTop() {

    Intent graphsIntent = getIntent();
    String response = graphsIntent.getStringExtra("response");


    AnyChartView top = findViewById(R.id.top_soil);
    top.setProgressBar(findViewById(R.id.progress_bar));

    Cartesian topChartData = AnyChart.line();

    topChartData.animation(true);

    topChartData.padding(5d, 10d, 3d, 10d);

    topChartData.xAxis(0).scale();
    topChartData.xScroller(true).container();

    topChartData.crosshair().enabled(true);
    topChartData.crosshair()
            .yLabel(true)
            .yStroke((Stroke) null, null, null, (String) null, (String) null);

    topChartData.tooltip().positionMode(TooltipPositionMode.POINT);

    topChartData.title("Top Soil (0 - 400mm)");

    topChartData.xAxis(0).labels().padding(3d, 3d, 3d, 3d);

    final List<DataEntry> seriesDataTop = new ArrayList<>();

    try {

        JSONObject jsonResponse = new JSONObject(response);
        JSONObject graphs = jsonResponse.getJSONObject("Grafieke");

        JSONArray dates = graphs.names();

        for (int i = 3; i < graphs.length(); i++) {

            String dateName = dates.getString(i);

            JSONObject dateData = graphs.getJSONObject(dateName);

            Number topSoil = dateData.getInt("TB");
            Number bb = dateData.getInt("BB");
            Number stressBo = dateData.getInt("stress");
            Number verwelpBo = dateData.getInt("verwelp");

            seriesDataTop.add(new CustomDataTop(dateName, topSoil, bb, stressBo));
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

    Set setTop = Set.instantiate();
    setTop.data(seriesDataTop);
    Mapping seriesTopMapping1 = setTop.mapAs("{ x: 'x', value: 'value' }");
    Mapping seriesTopMapping2 = setTop.mapAs("{ x: 'x', value: 'value2' }");
    Mapping seriesTopMapping3 = setTop.mapAs("{ x: 'x', value: 'value3' }");

    Line seriesTop1 = topChartData.line(seriesTopMapping1);
    seriesTop1.name("TB");
    seriesTop1.hovered().markers().enabled(true);
    seriesTop1.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesTop1.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    Line seriesTop2 = topChartData.line(seriesTopMapping2);
    seriesTop2.name("TO");
    seriesTop2.hovered().markers().enabled(true);
    seriesTop2.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesTop2.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    Line seriesTop3 = topChartData.line(seriesTopMapping3);
    seriesTop3.name("Stress Bo");
    seriesTop3.hovered().markers().enabled(true);
    seriesTop3.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesTop3.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    topChartData.legend().enabled(true);
    topChartData.legend().fontSize(13d);
    topChartData.legend().padding(0d, 0d, 10d, 0d);

    top.setChart(topChartData);
}

public void prepareGraphBot() {

    Intent graphsIntent = getIntent();
    String response = graphsIntent.getStringExtra("response");

    AnyChartView bottom = findViewById(R.id.bottom_soil);
    bottom.setProgressBar(findViewById(R.id.progress_bar));

    Cartesian botChartData = AnyChart.line();

    botChartData.animation(true);

    botChartData.padding(5d, 10d, 3d, 10d);

    botChartData.xAxis(0).scale();
    botChartData.xScroller(true).container();

    botChartData.crosshair().enabled(true);
    botChartData.crosshair()
            .yLabel(true)
            .yStroke((Stroke) null, null, null, (String) null, (String) null);

    botChartData.tooltip().positionMode(TooltipPositionMode.POINT);

    botChartData.title("Bottom Soil (400 - 800mm)");

    botChartData.xAxis(0).labels().padding(3d, 3d, 3d, 3d);

    final List<DataEntry> seriesDataBot = new ArrayList<>();

    try {

        JSONObject jsonResponse = new JSONObject(response);
        JSONObject graphs = jsonResponse.getJSONObject("Grafieke");

        JSONArray dates = graphs.names();

        for (int i = 3; i < graphs.length(); i++) {

            String dateName = dates.getString(i);

            JSONObject dateData = graphs.getJSONObject(dateName);

            Number botSoil = dateData.getInt("TO");
            Number bo = dateData.getInt("BO");
            Number stressOnder = dateData.getInt("stressonder");
            Number verwelpOnder = dateData.getInt("verwelponder");
            Number pvrOnder = dateData.getInt("pvronder");

            seriesDataBot.add(new CustomDataBot(dateName, botSoil, bo, stressOnder));
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

    Set setBot = Set.instantiate();
    setBot.data(seriesDataBot);
    Mapping seriesBotMapping1 = setBot.mapAs("{ x: 'r', value: 'value12' }");
    Mapping seriesBotMapping2 = setBot.mapAs("{ x: 'r', value: 'value22' }");
    Mapping seriesBotMapping3 = setBot.mapAs("{ x: 'r', value: 'value32' }");

    Line seriesBot1 = botChartData.line(seriesBotMapping1);
    seriesBot1.name("TO");
    seriesBot1.hovered().markers().enabled(true);
    seriesBot1.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesBot1.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    Line seriesBot2 = botChartData.line(seriesBotMapping2);
    seriesBot2.name("BO");
    seriesBot2.hovered().markers().enabled(true);
    seriesBot2.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesBot2.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    Line seriesBot3 = botChartData.line(seriesBotMapping3);
    seriesBot3.name("Stress Onder");
    seriesBot3.hovered().markers().enabled(true);
    seriesBot3.hovered().markers()
            .type(MarkerType.CIRCLE)
            .size(4d);
    seriesBot3.tooltip()
            .position("right")
            .anchor(Anchor.LEFT_CENTER)
            .offsetX(5d)
            .offsetY(5d);

    botChartData.legend().enabled(true);
    botChartData.legend().fontSize(13d);
    botChartData.legend().padding(0d, 0d, 10d, 0d);

    bottom.setChart(botChartData);
}

private class CustomDataTop extends ValueDataEntry {

    CustomDataTop(String x, Number value, Number value2, Number value3) {
        super(x, value);
        setValue("value2", value2);
        setValue("value3", value3);
    }
}

private class CustomDataBot extends ValueDataEntry {

    CustomDataBot(String r, Number value12, Number value22, Number value32) {
        super(r, value12);
        setValue("value22", value22);
        setValue("value32", value32);
    }

}

}

这是我的 xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".DetailedFieldActivity">

    <com.anychart.AnyChartView
        android:id="@+id/top_soil"
        android:layout_width="match_parent"
        android:layout_height="210dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginStart="0dp"
        android:layout_marginTop="49dp"
        android:layout_marginEnd="0dp">

    </com.anychart.AnyChartView>

    <com.anychart.AnyChartView
        android:id="@+id/bottom_soil"
        android:layout_width="match_parent"
        android:layout_height="201dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginBottom="50dp">

    </com.anychart.AnyChartView>

    <ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="278dp"
        android:layout_height="189dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="53dp"
        android:layout_marginTop="159dp"
        android:layout_marginEnd="53dp"
        android:layout_marginBottom="163dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/top_bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="0dp"
        android:background="@android:color/transparent"
        android:text="Top Bototm Soil" />

    <Button
        android:id="@+id/depths"
        android:layout_width="105dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/top_soil"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="3dp"
        android:background="@android:color/transparent"
        android:text="Depths" />

    <Button
        android:id="@+id/soil_temps"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="0dp"
        android:background="@android:color/transparent"
        android:text="Soil Temps" />

    <Button
        android:id="@+id/photo"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:background="@android:color/transparent"
        android:text="Photos" />

    <Button
        android:id="@+id/moisture"
        android:layout_width="121dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:background="@android:color/transparent"
        android:text="Moisture" />

    <Button
        android:id="@+id/irrigation"
        android:layout_width="123dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:background="@android:color/transparent"
        android:text="Irrigation" />

</RelativeLayout>

知道哪里出了问题吗?

最佳答案

获取chartview的引用后更改此行

//prepareGraphTop method
AnyChartView top = findViewById(R.id.top_soil);
APIlib.getInstance().setActiveAnyChartView(top);
//prepareGraphBot method 
AnyChartView bottom = findViewById(R.id.bottom_soil);
APIlib.getInstance().setActiveAnyChartView(bottom);

可以查看文档点击here !

关于java - AnyChart 尝试显示 Activity 的 2 个折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336185/

相关文章:

java - 在函数中模拟私有(private)变量以测试 Junit4

java - 内部类中的方法被 proguard 剥离

android - Zxing条码源码集成到Android项目中

java - Node.js Hmac SHA256 base64 的字符串

android - 我如何知道设备是否支持 GL_OES_standard_derivatives?

java - 在Java中,可以在下载前确定网页的大小吗?

java - final 变量在匿名类中使用时的垃圾收集

java - 使用 Jackson Mapper 将 JSON 数据映射到 Java POJO 类

java - 将低端口绑定(bind)到 Ubuntu 服务器上的 Java 程序

java - 用对象重写Java中的equals方法