Библиотека Android ChatKit не отображает изображения

Я хочу показать файл изображения после отправки. Но результат - пустое сообщение и отображается в левой части экрана (полученная сторона). Это происходит с любым набором URL.

пример изображения

мой item_list.xml:

<com.stfalcon.chatkit.messages.MessagesList
        android:id="@+id/chat.room.messagesList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/chat.room.input" />

Мой адаптер:

adapter = new MessagesListAdapter<ChatMessage>(getMyChatUser().getId(), null);
        messagesList.setAdapter(adapter);

или же

adapter = new MessagesListAdapter<ChatMessage>(getMyChatUser().getId(), imageLoader);
        messagesList.setAdapter(adapter);

с ImageLoader

imageLoader = new ImageLoader() {
            @Override
            public void loadImage(ImageView imageView, @Nullable String url, @Nullable Object payload) {
                Picasso.with(getActivity()).load(url).into(imageView);
            }
        };

Мои вложения:

messageInput.setAttachmentsListener(new MessageInput.AttachmentsListener() {
   @Override
   public void onAddAttachments() {
      ChatMessage chatMessage = new ChatMessage(String.valueOf(new Random().nextInt()), null, getMyChatUser());
      chatMessage.setImage(urlImage);
      adapter.addToStart(chatMessage, true);
   }
});

ChatMessage инвентарь MessageContentType.Imageкак говорится в официальном руководстве.

Реализациярешения верна. Я передал неправильный формат URL

1 ответ

Несколько заметок

Это конструктор, когда вы хотите, чтобы ваш адаптер содержал изображения.

MessagesListAdapter<Message> adapter = new MessagesListAdapter<T>(senderId, imageLoader);
messagesList.setAdapter(adapter);

Еще MessageListAdapter.java:

/**
 * For default list item layout and view holder.
 *
 * @param senderId    identifier of sender.
 * @param imageLoader image loading method.
 */
public MessagesListAdapter(String senderId, ImageLoader imageLoader) {
   this(senderId, new MessageHolders(), imageLoader);
}

Что пошло не так

Вы проходите null на конструкторе

adapter = new MessagesListAdapter<ChatMessage>(getMyChatUser().getId(), null);
        messagesList.setAdapter(adapter);

Если метод возвращает значение NULL, адаптер распознает сообщение как текстовое сообщение и отображает его в соответствующей форме. Если URL-адрес изображения присутствует, изображение будет отображаться с помощью ImageLoader, который мы передали адаптеру.

Что ты можешь сделать

Создайте что-то вроде этого [1] и передайте его MessageListAdapter

ImageLoader imageLoader = new ImageLoader() {
   @Override
   public void loadImage(ImageView imageView, String url) {
       Picasso.with(MessagesListActivity.this).load(url).into(imageView);
   }
};

Читать дальше на

Другие вопросы по тегам