HAHA, você pensou que eu não consegui pegar informações e quer me indicar Gson, Retrofit, OkHttp, Volley ou qualquer outro que você usa não é mesmo?
Mas aí que está, EU CONSEGUI TRAZER INFORMAÇÕES SIM.
O problema é que não está como eu quero.
Vou mandar um trecho do código, para que seja mais fácil explicar. Saca só:
btnMapSearchConfirmarTrajeto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nomeOrigemCorrida="Rua fulano", nomeDestinoCorrida="Rua beltrano", distancia="Km", valorTotal="R$ 0";
double latOrigem=0, lngOrigem=1, latDestino=2, lngDestino=3;
confirmaTrajeto(nomeOrigemCorrida, nomeDestinoCorrida, distancia, valorTotal, latOrigem, lngOrigem, latDestino, lngDestino);
}
});
// MÉTODO
public void confirmaTrajeto(String nomeOrigemCorrida, String nomeDestinoCorrida, String distancia, String valorTotal,
double latOrigem, double lngOrigem, double latDestino, double lngDestino) {
bundleNext.putString("nomeOrigemCorrida", nomeOrigemCorrida);
bundleNext.putString("nomeDestinoCorrida", nomeDestinoCorrida);
bundleNext.putString("quantidadeDistanciaCorrida", distancia);
bundleNext.putString("valorTotalCorrida", valorTotal);
// ORIGEM
bundleNext.putDouble("latitude_origem", latOrigem);
bundleNext.putDouble("longitude_origem", lngOrigem);
// DESTINO
bundleNext.putDouble("latitude_destino", latDestino);
bundleNext.putDouble("longitude_destino", lngDestino);
//
Intent intent = new Intent(getApplicationContext(), FrmPrincipalMapConfirmaCorrida.class);
intent.putExtras(bundleNext);
//
startActivity(intent);
}
PROBLEMA:
Como estão vendo, preciso de latitude e longitude (como eu disse, eu já pego), mas é duas vezes que preciso. Logo, eu odiaria repetir código
Pensei assim comigo "ah, é só criar um método que retorna o que eu quero do JSON"
Não.
Não deu.
Eu tentei, de verdade, por duas semanas.
Até me render ao fórum, porque vocês são os caras
Estou usando OkHttp. Eu tirei o código que traz informação do JSON, mas basicamente é isso aí:
Callback callLatitude = new Callback() {
@Override
public void onFailure(Call call, IOException e) { frmDados.print("onMapSearch:onFailure->" + e.getMessage().toString()); }
//
@Override
public void onResponse(Call call, Response response) throws IOException {
try {
if (response != null) {
opcoes.clear(); // é uma lista, beleza?
//
String json = response.body().string();
JSONObject jsonObject = new JSONObject(json); // captura tudo
//
JSONArray results = jsonObject.getJSONArray("results"); // tem uma key results no JSON e tal
JSONObject address = results.getJSONObject(0);
// geometry
JSONArray geometry = address.getJSONArray("geometry");
// location
JSONObject location = geometry.getJSONObject(0);
// latitude
// ELE TRAZ INFORMAÇÃO AQUI, MAS COMO EU FAÇO
// PRA LEVAR PRA FORA DAQUI? EU QUERO PREENCHER
// AQUELE MÉTODO CARA :(
} else {
frmDados.print("onMapSearch:else[response=null]");
frmDados.shortToast(getApplicationContext(), "[404-1] Local não encontrado. Tente por outro nome.");
}
} catch(JSONException e){
frmDados.shortToast(getApplicationContext(), "[404-2] Local não encontrado. Tente por outro nome");
frmDados.print(e.getMessage().toString());
}
}
};
Ignore o frmDados, é uma classe auxiliar que eu criei, ela não influencia no código, é apenas informativa.