El diseño

nos vamos a app->res->values->strings.xml escribimos lo siguiente:
 <resources>
    <string name="app_name">mexicoestadistico</string>
    <string name="estado_prompt">Seleccione un estado</string>
</resources>
            
             

nos vamos a app->res->layout->activity_main.xml
    
           <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context=".MainActivity">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical"
        tools:context=".MainActivity">






        <Spinner
            android:id="@+id/spinner1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:prompt="@string/estado_prompt"
            tools:layout_editor_absoluteX="32dp"
            tools:layout_editor_absoluteY="62dp">


        </Spinner>

        <Button
            android:id="@+id/btnPieChart"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:onClick="graficar"
            android:text="Mostrar datos"
            tools:layout_editor_absoluteX="30dp"
            tools:layout_editor_absoluteY="300dp" />

        <com.github.mikephil.charting.charts.PieChart
            android:id="@+id/piechart"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />




    </LinearLayout>

</android.support.constraint.ConstraintLayout>
          
          
           

MainActivity

En este codigo se muestra un spinner que se va cargar con arreglo de string y un boton que cuando lo presionamos nos muestre la grafica del estado.El código queda de la siguiente forma:
        
          
package mx.com.tutosoftware.mexicoestadistico;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;


import com.github.mikephil.charting.charts.PieChart;

import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.data.PieEntry;
import com.github.mikephil.charting.utils.ColorTemplate;

import java.util.ArrayList;
import java.util.List;

import mx.com.tutosoftware.mexicoestadistico.model.Datos;
import mx.com.tutosoftware.mexicoestadistico.model.Estados;
import mx.com.tutosoftware.mexicoestadistico.service.DatosService;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    Spinner spinner;
    ArrayList<String> estados = new ArrayList<>();
    ArrayAdapter arrayAdapter;
    List<Datos> datosInegi= new ArrayList<Datos>();
    String poblacionFemenina;
    String poblacionMasculina;
    PieChart pieChart;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,estados);
        spinner = (Spinner) findViewById(R.id.spinner1);
        pieChart = findViewById(R.id.piechart);
        spinner.setAdapter(arrayAdapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                poblacionFemenina =  datosInegi.get(position).getPob_fem();
                poblacionMasculina=  datosInegi.get(position).getPob_mas();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        getDatosEstado();
    }
    private void getDatosEstado(){

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://gaia.inegi.org.mx/wscatgeo/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        DatosService datosService = retrofit.create(DatosService.class);
        Call<Estados> call = datosService.getData() ;



        call.enqueue(new Callback<Estados>() {
            @Override
            public void onResponse(Call<Estados> call, Response<Estados> response) {

                Estados estadosI = response.body();




                datosInegi= estadosI.getDatos();

                for(Datos datosE : datosInegi){
                    estados.add(datosE.getNom_agee());
                }


                arrayAdapter.notifyDataSetChanged();
            }

            @Override
            public void onFailure(Call<Estados> call, Throwable t) {

            }
        });

    }
    public void graficar(View view){

        float numMujeres = Float.parseFloat(poblacionFemenina);
        float numHombres = Float.parseFloat(poblacionMasculina);

        ArrayList<PieEntry> habitantes = new ArrayList<PieEntry>();
        habitantes.add(new PieEntry(numMujeres,"Mujeres"));
        habitantes.add(new PieEntry(numHombres,"Hombres"));
        PieDataSet dataSet = new PieDataSet(habitantes,"Número de habitantes");
        dataSet.setValueTextSize(12);
        ArrayList<String> tipoHabitante = new ArrayList<String>();

        PieData data = new PieData(dataSet);


        pieChart.setData(data);
        dataSet.setColors(ColorTemplate.COLORFUL_COLORS);

        pieChart.animateXY(5000,5000);

    }
}

         

Corriendo la app

Corremos el ejemplo:
android inegi
Seleccionamos un estado y hacemos click en Mostrar datos
android inegi
Volvemos a selecionar Mexico
android inegi

Conclusión

Como pudimos ver en este ejemplo cargamos la consulta del webservice en un spinner y cuando seleccionamos un estado presionamos el boton mostrar datos y automaticamente se dibuja el grafico,para poder realizar esto hay que poner el objeto Estados como atributo de la clase, cuando invocamos getDatosEstado se carga el objeto y posteriormente lo podemos utilizar en los eventos que continuen despues.En este ejemplo aprendimos a consumir un api rest lo cual resulta muy sencillo con retrofit.La experiencia que me deja el programar android es muy interesante ya que utliza java y yo soy developer java y me gusto mucho, ya que se pueden hacer infinidad cosas con los celulares.

Descargar código

Probando en producción

Descargar apk

El apk lo puedes descargar del siguiente enlace lo puedes instalar sin problemas este apk fue probado en un huawei 8i

Referencias