#java #android #android_vksdk
Помогите распарсить профиль в board в VkApi....не понимаю как...все приходит, правильно, а фото и имя с фамилией стоит одна у всех... как это исправить? VKParameters param = new VKParameters(); param.put(VKApiConst.GROUP_ID, "ID_ГРУППЫ"); param.put("topic_id", "ID_ТОПИКА"); param.put(VKApiConst.EXTENDED, 1); VKRequest result = new VKRequest(String.format(Locale.US, "%s.%s", "board", "getComments"), param, VKCommentArray.class); result.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); VKCommentArray parsedModel = (VKCommentArray) response.parsedModel; try { object = new JSONObject(response.responseString); responseObject = object.getJSONObject("response"); array = responseObject.getJSONArray("profiles"); for (int i = 0; i < object.length(); i++) { JSONObject item = array.getJSONObject(i); first_name = item.getString("first_name"); last_name = item.getString("last_name"); logo = item.getInt("photo_50"); } } catch (JSONException e) { e.printStackTrace(); } for (com.vk.sdk.api.model.VKApiComment topic : parsedModel) { String date = (new SimpleDateFormat("d MMM yyyy 'в' HH:mm", new Locale("ru")).format(new Date(topic.date * 1000L))); arr_list.add(new BoardItems1(logo, first_name + " " + last_name, date, topic.text)); } listView.setAdapter(adapter); } } ошибка такая: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) atcalculation.*..**.by.board.BoardActivity1$1.onComplete(BoardActivity1.java:147) at com.vk.sdk.api.VKRequest$3.run(VKRequest.java:482) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5296) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
Ответы
Ответ 1
Согласно доке вам надо добавить к запросу параметр extended со значением 1, для того, чтобы информация о юзерах приходила вместе с информацией о комментарии. После этого, согласно той же доке информация о юзерах, будет в массиве, лежащем рядом с массивом комментов. VKParameters param = new VKParameters(); param.put(VKApiConst.GROUP_ID, "ID_ГРУППЫ"); param.put("topic_id", "ID_ТОПИКА"); param.put(VKApiConst.EXTENDED, 1); VKRequest result = new VKRequest(String.format(Locale.US, "%s.%s", "board", "getComments"), param, VKCommentArray.class); result.executeWithListener(new VKRequest.VKRequestListener() { @Override public void onComplete(VKResponse response) { super.onComplete(response); VKCommentArray parsedModel = (VKCommentArray)response.parsedModel; Listnames = new ArrayList<>(); List surNames = new ArrayList<>(); List logos = new ArrayList<>(); try { object = new JSONObject(response.responseString); responseObject = object.getJSONObject("response"); array = responseObject.getJSONArray("profiles"); for (int i=0; i< object.length(); i++){ JSONObject item = array.getJSONObject(i); names.add(item.getString("first_name")); surNames.add(item.getString("last_name")); logos.add(item.getInt("photo_50")); } } catch (JSONException e) { e.printStackTrace(); } int i = 0; for (com.vk.sdk.api.model.VKApiComment topic : parsedModel) { String date = (new SimpleDateFormat("d MMM yyyy 'в' HH:mm", new Locale("ru")).format(new Date(topic.date* 1000L))); arr_list.add(new BoardItems1(logos.get(i), names.get(i) + " " + surNames.get(i), date, topic.text)); i++ } listView.setAdapter(adapter); } }
Комментариев нет:
Отправить комментарий