Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Помогите распарсить профиль в board в VkApi

#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; List names = 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); } }

Комментариев нет:

Отправить комментарий