Библиотека 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);
}
};
Читать дальше на