 <p>I think it is not correct to call <code>prepareMap(Lang, Long)</code> and <code>addData()</code> after to the call <code>query.getInBackground(...)</code> because "In background" means in a different Thread. You should reorder your calls like this:</p> <pre><code>ParseQuery&lt;ParseObject&gt; query = ParseQuery.getQuery("resdb"); query.getInBackground(obj, new GetCallback&lt;ParseObject&gt;() { @Override public void done(ParseObject object, ParseException e) { if (e == null) { restName = object.getString("name"); restCuisine = object.getString("cuisine"); restLocation = object.getString("location"); restAddress = object.getString("address"); // Update your info after to get the rest info prepareMap(Lang, Long); addData(); } else { e.printStackTrace(); } } }); </code></pre> <p>I hope this help you!</p>