final ArrayList<String> users = new ArrayList<>(); for ( VKApiDialog msg : list) { final String[] result = new String[1]; final int id=msg.message.user_id; VKRequest request1 = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS,String.valueOf(msg.message.user_id),VKApiConst.FIELDS, "first_name, last_name")); request1.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); user = ((VKList) response.parsedModel); result[0] =user.getById(id).toString(); } }); users.add(result[0]); } after exiting onComplete variable becomes null
if users.add(result[0]) called inside, then when I call onComplete from outside, after users.size() I get 0.
`
for ( VKApiDialog msg : list) { final String[] result = new String[1]; final int id=msg.message.user_id; VKRequest request1 = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS,String.valueOf(msg.message.user_id),VKApiConst.FIELDS, "first_name, last_name")); request1.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); user= ((VKList) response.parsedModel); result[0] =user.getById(id).toString(); users.add(result[0]); } }); System.out.println(users.size());` Result:
04-12 13:50:00.792 11984-11984/com.example.belzik.messagefromvk I/System.out: 0 04-12 13:50:00.793 11984-11984/com.example.belzik.messagefromvk I/System.out: 0 04-12 13:50:00.793 11984-11984/com.example.belzik.messagefromvk I/System.out: 0 04-12 13:50:00.793 11984-11984/com.example.belzik.messagefromvk I/System.out: 0
users.add(result[0]);you cannot expectresult[0]already contain a value. Transferusers.add(result[0]);inonComplete(). - Nofate ♦users.getSize(), received 0 - kalugin1912users.getSize()afterVKRequestListenerworked? - Nofate ♦users.size()- kalugin1912