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

OSCHINA-MIRROR/GitLqr-LQRAdapterLibrary

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

LQRAdapterLibrary

Универсальный адаптер (RecyclerView, ListView, GridView)

Только нужно импортировать одну строку, чтобы использовать два вида адаптера:

compile 'com.lqr.adapter:library:1.0.2'

1. LQRAdapterForAbsListView

1. Создание адаптера

LQRAdapterForAbsListView<тип данных> (контекст, набор данных, ссылка на макет элемента)

2. В методе convert установите данные для элемента

3. Пример:

private List<String> mData = new ArrayList<>();
for (int i = 0; i < 100; i++) {
    mData.add("item " + i);
}

//ListView
mLv.setAdapter(new LQRAdapterForAbsListView<String>(this, mData, R.layout.item_tv_list) {
    @Override
    public void convert(LQRViewHolderForAbsListView helper, String item, int position) {
        helper.setText(R.id.tv, item);
    }
});

//GridView
mGv = (GridView) findViewById(R.id.gv);
mGv.setAdapter(new LQRAdapterForAbsListView<String>(this, mData, R.layout.item_tv_list) {
    @Override
    public void convert(LQRViewHolderForAbsListView helper, String item, int position) {
        helper.setText(R.id.tv, item);
    }
});

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

LQRViewHolderForAbsListView предоставляет множество стандартных операций с элементами управления, таких как установка текста, цвета текста, фона, видимости и т. д. Каждый метод возвращает this, что означает возможность цепной операции для удобства быстрой разработки.

2. LQRAdapterForRecyclerView

1. Создание адаптера

LQRAdapterForRecyclerView<тип данных> (контекст, набор данных, ссылка на макет элемента)

2. В методе convert установите данные для элемента

3. Пример:

//RecyclerView
mRv.setAdapter(new LQRAdapterForRecyclerView<String>(this, mData, R.layout.item_tv_list) {
    @Override
    public void convert(LQRViewHolderForRecyclerView helper, String item, int position) {
        helper.setText(R.id.tv, item);
    }
});

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

LQRViewHolderForRecyclerView предоставляет множество стандартных операций с элементами управления, таких как установка текста, цвета текста, фона, видимости и т. д. Каждый метод возвращает this, что означает возможность цепной операции для удобства быстрой разработки.

5. Добавление заголовка и нижнего колонтитула

LQRAdapterForRecyclerView<String>  mAdapter = new LQRAdapterForRecyclerView(...);
//Необходимо использовать HeaderAndFooterAdapter в качестве адаптера RecyclerView
mRv.setAdapter(mAdapter.getHeaderAndFooterAdapter());

//Добавление заголовка
private void testAddHeaderView() {
    TextView tv = new TextView(this);
    ...
    tv.setText("heaer");
    mAdapter.addHeaderView(tv);
}

//Добавление нижнего колонтитула
private void testAddFooterView() {
    TextView tv = new TextView(this);
    ...
    tv.setText("footer");
    mAdapter.addFooterView(tv);
}

image

6. Поддержка нескольких типов представлений (viewType)

Если в проекте необходимо использовать несколько типов элементов представления, необходимо повторно реализовать метод getItemViewType, возвращаемое значение которого соответствует идентификатору ресурса макета различных типов представлений, например:

private static final int NOTIFICATION = R.layout.item_notification;
private static final int SEND_TEXT = R.layout.item_text_send;
private static final int RECEIVE_TEXT = R.layout.item_text_receive;
private static final int SEND_STICKER = R.layout.item_sticker_send;
private static final int RECEIVE_STICKER = R.layout.item_sticker_receive;
private static final int SEND_IMAGE = R.layout.item_image_send;
private static final int RECEIVE_IMAGE = R.layout.item_image_receive;
private static final int SEND_VIDEO = R.layout.item_video_send;
private static final int RECEIVE_VIDEO = R.layout.item_video_receive;
private static final int SEND_LOCATION = R.layout.item_location_send;
private static final int RECEIVE_LOCATION = R.layout.item_location_receive;

@Override
public int getItemViewType(int position) {
    IMMessage msg = getData().get(position);
    MsgTypeEnum msgType = msg.getMsgType();
    if (msgType == MsgTypeEnum.notification) {
        return NOTIFICATION;
    }
    if (msgType == MsgTypeEnum.text) {
        if (msg.getDirect() == MsgDirectionEnum.Out) {
            return SEND_TEXT;
        } else {
            return RECEIVE_TEXT;
        }
    }
    if (msgType == MsgTypeEnum.custom) {
        if (msg.getDirect() == MsgDirectionEnum.Out) {
            return SEND_STICKER;
        } else {
            return RECEIVE_STICKER;
        }
    }
    if (msgType == MsgTypeEnum.image) {
        if (msg.getDirect() == MsgDirectionEnum.Out) {
            return SEND_IMAGE;
        } else {
            return RECEIVE_IMAGE;
        }
    }
    if (msgType == **Вот перевод текста на русский язык:**

MsgTypeEnum.video) { if (msg.getDirect() == MsgDirectionEnum.Out) { return SEND_VIDEO; } else { return RECEIVE_VIDEO; } } if (msgType == MsgTypeEnum.location) { if (msg.getDirect() == MsgDirectionEnum.Out) { return SEND_LOCATION; } else { return RECEIVE_LOCATION; }} return super.getItemViewType(position); }

Это код, который используется в моём проекте, и я предлагаю его в качестве примера.

7、Другие моменты

Рекомендуется использовать вместе с LQRRecyclerView, что позволяет значительно повысить эффективность разработки, так как не нужно учитывать LayoutManager и разделительные линии.

Три: Контроль событий

Независимо от того, используется ли LQRAdapterForAbsListView или LQRAdapterForRecyclerView, можно отслеживать события для элементов через адаптер. Вот пример кода:

mAdapter.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(LQRViewHolder helper, ViewGroup parent, View itemView, int position) {
        helper.setText(R.id.tv, "Я был нажат");
    }
});
mAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(LQRViewHolder helper, ViewGroup parent, View itemView, int position) {
        helper.setText(R.id.tv, "Меня долго нажимали");
        return false;
    }
});
mAdapter.setOnItemTouchListener(new OnItemTouchListener() {
    @Override
    public boolean onItemTouch(LQRViewHolder helper, View childView, MotionEvent event, int position) {
        helper.setText(R.id.tv, "Ко мне прикоснулись");
        return false;
    }

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/GitLqr-LQRAdapterLibrary.git
git@api.gitlife.ru:oschina-mirror/GitLqr-LQRAdapterLibrary.git
oschina-mirror
GitLqr-LQRAdapterLibrary
GitLqr-LQRAdapterLibrary
master