1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/jpush-aurora-imui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
usageEn.md 9.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 04:38 7486689

MessageList

MessageList — это список сообщений в интерфейсе чата, который можно полностью настроить. Если вы не определяете свой стиль, MessageList будет использовать стиль по умолчанию.

Установка

Мы поддерживаем несколько способов добавления зависимостей. Вы можете выбрать один из них:

  • Gradle:
compile 'cn.jiguang.imui:imui:0.1.0'
  • Maven:
<dependency>
  <groupId>cn.jiguang.imui</groupId>
  <artifactId>imui</artifactId>
  <version>0.1.0</version>
  <type>pom</type>
</dependency>
  • JitPack:
// Add in project's build.gradle
allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

// Add in module's build.gradle
dependencies {
    compile 'com.github.jpush:imui:0.1.0'
}

Использование

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

1. Добавьте MessageList в свой XML-макет:

<cn.jiguang.imui.messages.MessageList
    android:id="@+id/msg_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:avatarHeight="50dp"
    app:avatarWidth="50dp"
    app:bubbleMaxWidth="0.70"
    app:dateTextSize="14sp"
    app:receiveBubblePaddingLeft="20dp"
    app:receiveBubblePaddingRight="10dp"
    app:receiveTextColor="#ffffff"
    app:receiveTextSize="18sp"
    app:sendBubblePaddingLeft="10dp"
    app:sendBubblePaddingRight="20dp"
    app:sendTextColor="#7587A8"
    app:sendTextSize="18sp" />

Мы определили множество атрибутов для поддержки настройки пользователем своего макета. Подробнее см. attrs.xml. Мы также полностью поддерживаем настройку стиля, пожалуйста, смотрите ниже.

2. Создайте адаптер

У конструктора адаптера есть три параметра. Первый — sender id, идентификатор отправителя. Второй — HoldersConfig object, вы можете использовать этот объект для создания собственного ViewHolder и макета. Третий — реализация ImageLoader, используется для отображения аватара пользователя. Если это значение равно нулю, аватар отображаться не будет. (Подробнее об ImageLoader)

MsgListAdapter adapter = new MsgListAdapter<MyMessage>("0", holdersConfig, imageLoader);
messageList.setAdapter(adapter);

3. Создайте модель

Чтобы добавить сообщения, вам необходимо реализовать интерфейсы IMessage и IUser в вашей существующей модели и переопределить их методы:

public class MyMessage implements IMessage {

    private long id;
    private String text;
    private String timeString;
    private MessageType type;
    private IUser user;
    private String contentFile;
    private long duration;

    public MyMessage(String text, MessageType type) {
        this.text = text;
        this.type = type;
        this.id = UUID.randomUUID().getLeastSignificantBits();
    }

    @Override
    public String getMsgId() {
        return String.valueOf(id);
    }

    @Override
    public IUser getFromUser() {
        if (user == null) {
            return new DefaultUser("0", "user1", null);
        }
        return user;
    }

    public void setUserInfo(IUser user) {
        this.user = user;
    }

    public void setMediaFilePath(String path) {
        this.contentFile = path;
    }

    public void setDuration(long duration) {
        this.duration = duration;
    }

    @Override
    public long getDuration() {
        return duration;
    }

    public void setTimeString(String timeString) {
        this.timeString = timeString;
    }

    @Override
    public String getTimeString() {
        return timeString;
    }

    @Override
    public MessageType getType() {
        return type;
    }

    @Override
    public String getText() {
        return text;
    }

    @Override
    public String getMediaFilePath() {
        return contentFile;
    }
}

MessageType выше — это класс enum в классе IMessage. Вам также необходимо реализовать интерфейс IUser:

public class DefaultUser implements IUser {

    private String id;
    private String displayName;
    private
``` Вот перевод текста на русский язык:

String avatar;

public DefaultUser(String id, String displayName, String avatar) { this.id = id; this.displayName = displayName; this.avatar = avatar; }

@Override public String getId() { return id; }

@Override public String getDisplayName() { return displayName; }

@Override public String getAvatarFilePath() { return avatar; } }

Это всё! Теперь вы можете использовать свою собственную модель сообщений для заполнения адаптера без какого-либо преобразования типов!

## Управление данными
### Добавление новых сообщений
Добавить новое сообщение в список сообщений довольно просто, мы поддерживаем два способа добавления новых сообщений:

- Добавить новое сообщение внизу списка сообщений: `addToStart(IMESSAGE message, boolean scroll)`

// добавляем новое сообщение внизу списка сообщений, второй параметр подразумевает прокрутку до конца. adapter.addToStart(message, true);


- Добавлять сообщения вверху списка сообщений (обычно этот метод используется для загрузки последней страницы истории сообщений): `addToEnd(List<IMessage> messages)`

// Добавляем сообщения в начало списка сообщений adapter.addToEnd(messages);


- Прокрутка для загрузки исторических сообщений
После добавления этого слушателя: `OnLoadMoreListener`, при прокрутке вверх будет срабатывать событие `onLoadMore`, например:

mAdapter.setOnLoadMoreListener(new MsgListAdapter.OnLoadMoreListener() { @Override public void onLoadMore(int page, int totalCount) { if (totalCount < mData.size()) { new Handler().postDelayed(new Runnable() { @Override public void run() { mAdapter.addToEnd(mData); } }, 1000); } } });


### Удаление сообщения
Вот методы удаления сообщения:

- *adapter.deleteById(String id)*: удаление по идентификатору сообщения
- *adapter.deleteByIds(String[] ids)*: удаление по массиву идентификаторов сообщений
- *adapter.delete(IMessage message)*: удаление согласно объекту сообщения
- *adapter.delete(List<IMessage> messages)*: удаление согласно списку объектов сообщений
- *adapter.clear()*: удаление всех сообщений

### Обновление сообщения
Если сообщение обновлено, вы можете вызвать эти методы, чтобы уведомить адаптер об обновлении сообщения:

- *adapter.update(IMessage message)*: сообщение, которое нужно обновить
- *adapter.update(String oldId, IMessage newMessage)*


## Обработка событий
- `OnMsgClickListener` срабатывает при нажатии на сообщение

mAdapter.setOnMsgClickListener(new MsgListAdapter.OnMsgClickListener() { @Override public void onMessageClick(MyMessage message) { // делаем что-то } });


- `OnAvatarClickListener` срабатывает при клике на аватар

mAdapter.setOnAvatarClickListener(new MsgListAdapter.OnAvatarClickListener() { @Override public void onAvatarClick(MyMessage message) { DefaultUser userInfo = (DefaultUser) message.getUserInfo(); // Делаем что-то } });


- `OnMsgLongClickListener` срабатывает при долгом нажатии на сообщение

mAdapter.setMsgLongClickListener(new MsgListAdapter.OnMsgLongClickListener() { @Override public void onMessageLongClick(MyMessage message) { // делаем что-то } });


Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/jpush-aurora-imui.git
git@api.gitlife.ru:oschina-mirror/jpush-aurora-imui.git
oschina-mirror
jpush-aurora-imui
jpush-aurora-imui
master