Also habe ich Code-Beispiele aus dem ganzen Netz verwendet und meine App dazu gebracht, eine .php-Datei auf meinem Server aufzurufen, die JSON-Daten abzurufen, dann die Daten zu parsen und drucke es aus.Wie man Daten manipuliert, nachdem sie über die entfernte Datenbank abgerufen wurden
Das Problem ist, dass es nur für den Zweck des Tutorials, das ich folgte, auf den Bildschirm gedruckt wurde, aber jetzt muss ich diese Daten an anderen Orten verwenden und Hilfe, diesen Prozess herauszufinden.
Das ultimative Ziel ist, meine DB-Abfrage mit Kartenkoordinaten zurückzugeben, dann plotten sie auf einer Google-Karte. Ich habe eine andere App, in der ich manuell Punkte auf einer Karte zeichne, also werde ich diese App mit dieser integrieren, sobald ich mich darüber im Klaren bin, wie man die zurückgegebenen Daten richtig manipuliert.
public class Remote extends Activity {
/** Called when the activity is first created. */
TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Create a crude view - this should really be set via the layout resources
// but since its an example saves declaring them in the XML.
LinearLayout rootLayout = new LinearLayout(getApplicationContext());
txt = new TextView(getApplicationContext());
rootLayout.addView(txt);
setContentView(rootLayout);
// Set the text and call the connect function.
txt.setText("Connecting...");
//call the method to run the data retreival
txt.setText(getServerData(KEY_121));
}
public static final String KEY_121 = "http://example.com/mydbcall.php";
private String getServerData(String returnString) {
InputStream is = null;
String result = "";
//the year data to send
//ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//nameValuePairs.add(new BasicNameValuePair("year","1970"));
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(KEY_121);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","longitude: "+json_data.getDouble("longitude")+
", latitude: "+json_data.getDouble("latitude")
);
//Get an output to the screen
returnString += "\n\t" + jArray.getJSONObject(i);
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return returnString;
}
}
So ist der Code:
returnString += "\n\t" + jArray.getJSONObject(i);
ist, was derzeit auf dem Bildschirm gedruckt wird.
Was ich habe, um herauszufinden, wie die Daten in etwas zu bekommen, die ich in anderen Stellen im Programm verweisen kann, und die einzelne Elemente zugreifen dh:
double longitude = jArray.getJSONObject(3).longitude;
oder etwas in diesem Sinne ..
Ich denke, die Klasse getServerData muss einen Array-Typ oder etwas zurückgeben?
Jede Hilfe ist willkommen, danke.
Ich mache, wie Sie beschrieben, und Ergebnis zurückgeben, die ein Array meiner Klasse Location ist. Schnelle Frage, wie kann ich auf diese Daten zugreifen, nachdem ich etwas wie result.get (location) zurückgegeben habe? – bMon
Sie sollten auf Arrays und Listen in Java nachlesen. Sie sind ziemlich einfach, viel Dokumentation: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html http://download.oracle.com/javase/tutorial/collections /interfaces/list.html –
Danke, Mayra, schätze es. – bMon