Doubt with AndroidPlot

0

Can anyone tell me why this code is not generating the desired graph?

// screen code

import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParsePosition;
import java.util.Arrays;
import java.util.Observable;
import java.util.Observer;

import com.androidplot.Plot;
import com.androidplot.xy.BoundaryMode;
import com.androidplot.xy.LineAndPointFormatter;
import com.androidplot.xy.SimpleXYSeries;
import com.androidplot.xy.XYPlot;
import com.androidplot.xy.XYSeries;
import com.androidplot.xy.XYStepMode;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RadioGroup;
import android.widget.Spinner;


public class TelaB extends Activity {

        //Vetor de culturas da comboBox;
        private String[] culturas = new String[] {"Milho"};
        //Cria um objeto do XYPlot grafico  
        private static XYPlot grafico;

        //Vetor de dias da semana que sera colocado no grafico
        final static String[] dias = new String[]{"Dom","Seg", "Ter", "Qua", "Qui", "Sex", "Sab"};

        @Override
        protected void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.activity_telab);
            //pega o comboBox pelo id
            final Spinner combo = (Spinner) findViewById(R.id.comboCultura);
            //Cria um arrayAdapter
            ArrayAdapter adaptador = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, culturas);
            adaptador.setDropDownViewResource(android.R.layout.simple_spinner_item);
            //Set o ArrayAdapter no Spinner
            combo.setAdapter(adaptador);
            //Listener do Spinner
            combo.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

                //Se selecionado algo
                @Override
                public void onItemSelected(AdapterView<?> parent, View view,
                        int position, long id) {
                    //Fazer algo com isso;

                }
                //Se não
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
                    // TODO Auto-generated method stub

                }

            });
        // pego o RadioGroup pelo id
        final RadioGroup dados = (RadioGroup) findViewById(R.id.dados);
        //pega o Grafico pelo id
        grafico = (XYPlot)findViewById(R.id.grafico);
        //Listener do RadioGroup
        dados.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            //Cria booleans para testar os Radios se estão setados
            boolean temp = R.id.temp == checkedId;
            boolean umid = R.id.umid == checkedId;
            boolean pres = R.id.pres == checkedId;
            boolean alt = R.id.alt == checkedId;
            boolean umids = R.id.alt == checkedId;
            boolean vento = R.id.vento == checkedId;
            boolean lum = R.id.lum == checkedId;
            boolean temps = R.id.temps == checkedId;
            //Testes dos Boolean
            if(temp){
                //Seta os vetores com os dados
                Number[] dadoA = {27,29,24,26,30,29,28};
                Number[] dadoC = {24,30,24,30,24,30,24};
                //Nome que vai na lateral indicando o que é o grafico
                String nome = "Temperatura em ºC";
                //Chama o método que cria o gráfico
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(umid){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Umidade";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(pres){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Pressão";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(alt){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Altitude";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(umids){
                Number[] dadoA = {0.2,0.4,4,6,6,7,4};
                Number[] dadoC = {0.3,0.2,3,7,3,7,3};
                String nome = "Umidade do solo /mm";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(vento){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Velocidade do vento";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(lum){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Luminosidade";
                TelaB.grafico(dadoA, dadoC, nome);
            }else if(temps){
                Number[] dadoA = {};
                Number[] dadoC = {};
                String nome = "Temperatura do solo";
                TelaB.grafico(dadoA, dadoC, nome);
            }

        }
    });


    }

    //Metodo que gera o gráfico
    public static void grafico(Number[] dadoA, Number[] dadoC, String nome){

        //Converte os arrays em uma série XY
        XYSeries Agri_Weather = new SimpleXYSeries(Arrays.asList(dadoA), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,"DadoAgri_Weather");
        XYSeries Cultura = new SimpleXYSeries(Arrays.asList(dadoC), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY,"DadoCultura");

        //Cria um formato de linha e ponto
        LineAndPointFormatter Agri_Weather_Formato = new LineAndPointFormatter(Color.rgb(0,0,255),Color.rgb(200,200,200), null, null);
        LineAndPointFormatter Cultura_Formato = new LineAndPointFormatter(Color.rgb(0,0,255),Color.rgb(200,200,200), null, null);

        //Adiciona Agri_Weather e Cultura ao XYplot
        grafico.addSeries(Agri_Weather, Agri_Weather_Formato);
        grafico.addSeries(Cultura, Cultura_Formato);

        //Formata o DomainValues X-Axis
        grafico.setDomainValueFormat(new Format(){
            @Override
            public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos){
                return new StringBuffer(dias[((Number)obj).intValue()]);
            }
            @Override
            public Object parseObject(String source, ParsePosition pos){
                return null;
            }

        });

        grafico.setDomainLabel("");
        grafico.setRangeLabel(nome);

        //Incrementa o X-Axis em 1
        grafico.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);
        grafico.getGraphWidget().setRangeLabelWidth(25);

        //Reduz o numero de range labels
        grafico.setTicksPerRangeLabel(2);

        //Reduz o numero de domain labels
        grafico.setTicksPerDomainLabel(2);

    }
}

// Screen Layout

<ScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <Spinner
            android:id="@+id/comboCultura"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="true" />

        <RadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/dados"
            >

        <RadioButton
            android:id="@+id/temp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Temperatura" />
        <RadioButton
            android:id="@+id/umid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Umidade" />
        <RadioButton
            android:id="@+id/pres"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Pressão" />
        <RadioButton
            android:id="@+id/alt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Altitude" />
        <RadioButton
            android:id="@+id/umids"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Umidade do solo" />
        <RadioButton
            android:id="@+id/vento"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Velocidade do vento" />
        <RadioButton
            android:id="@+id/lum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Luminosidade" />
        <RadioButton
            android:id="@+id/temps"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Temperatura do solo" />
        </RadioGroup>

    </LinearLayout>

</ScrollView>

<com.androidplot.xy.XYPlot
    android:id="@+id/grafico"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    title="Gráfico meteorologico"/>

The type of chart you want is the row type, and on the days of the week (which has been placed in the code) of the X-segment in the chart you must place points to highlight on the rows.

The problem is in AndroidPlot, more specifically in the graphical method of the code, because the values are being passed correctly, but when I squeeze in the emulator it does not generate any graphics when clicking the Spinners.

Thank you

    
asked by anonymous 02.05.2015 / 21:07

0 answers