Библиотека Android ChatKit не отображает изображения - PullRequest
0 голосов
/ 23 января 2019

Я хочу отобразить файл изображения после отправки.Но результат - пустое сообщение и отображается в левой части экрана (полученная сторона).Это происходит с любым набором 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 Ответ

0 голосов
/ 23 января 2019

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

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

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);

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

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

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

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

Подробнее о

...