配列のようなものを探していますが、複数のデータ型を格納する必要があります。Oracle Java チュートリアルには、「配列は、単一の型の一定数の値を保持するコンテナ オブジェクトです」と書かれています。では、配列を複数の型に使用できない場合は、何を使用すればよいでしょうか?
ループごとに緯度と経度の値を上書きし、最後の値のみを onPostExecute に渡すため、一度に 1 つのマーカーのみをマップに追加するこのコードがあります。したがって、複数の形式の連絡先情報を渡すには、配列のようなものが必要になります。つまり、各 JSON 文字列から場所を取得していますが、このバックグラウンド スレッドから名前と電話番号も取得して UI に渡す必要があります。
try {
String apples = endpoint.listContactInfo().execute().toString();
JSONObject jObject = new JSONObject(apples);
JSONArray jsonArr = jObject.getJSONArray("items");
for(int i =0 ; i<jsonArr.length() ;i++ ){
JSONObject jsonObj1 = jsonArr.getJSONObject(i);
// Storing each json item in variable
String id = jsonObj1.getString(TAG_ID);
String nameFirst1 = jsonObj1.getString(TAG_FIRSTNAME);
String nameLast1 = jsonObj1.getString(TAG_LASTNAME);
String emailAddress1 = jsonObj1.getString(TAG_EMAIL);
String streetAddress1 = jsonObj1.getString(TAG_ADDRESS);
String phone1 = jsonObj1.getString(TAG_PHONE);
//test to see if made it to string
Log.d("YOUR_TAG", "First Name: " + nameFirst1 + " Last Name: " + nameLast1);
address = coder.getFromLocationName(streetAddress1,5);
Address location1 = address.get(0);
// SET LAT LNG VALUES FOR MARKER POINT
lati = location1.getLatitude();
longi = location1.getLongitude();
Log.d("Location", "Location:" + lati + " " + longi);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (long) 0;
}
// ADD MARKER TO MAP UI
protected void onPostExecute(Long result) {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(lati, longi))
.title("Hello world"));
}