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

OSCHINA-MIRROR/HarmonyOS-tpc-search-dialog

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

Поиск-диалог

Великолепный настраиваемый диалог поиска со встроенными опциями поиска.

Показать

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

Через DevEco studio 2.0+ и загрузку SDK Native версии 2.0+.

«В китайском пути, Build Debug Hap(s) потерпит неудачу, пожалуйста, поместите проект в полностью английский каталог».

Способ один:

В entry Gradle интегрируйте следующую операцию:

Измените implementation fileTree (dir: 'libs', include: ['.jar','.har']) добавьте *.har.

Способ два:

allprojects{
    repositories{
        mavenCentral()
    }
}
implementation 'io.openharmony.tpc.thirdlib:search-dialog:1.0.5'

Простое использование

Если вы просто хотите использовать простой диалог поиска, сначала вам нужно предоставить доступные для поиска элементы. Для этого вы должны реализовать Searchable в своей модели.

Вы можете увидеть пример SampleModel:

public class SampleSearchModel implements Searchable {
    private String mTitle;

    public SampleSearchModel(String title) {
        mTitle = title;
    }

    @Override
    public String getTitle() {
        return mTitle;
    }

    public SampleSearchModel setTitle(String title) {
        mTitle = title;
        return this;
    }}

Теперь создайте некоторые параметры поиска в вашей способности:

    private ArrayList<SampleModel> createSampleData(){
        ArrayList<SampleSearchModel> items = new ArrayList<>();
        items.add(new SampleModel("First item"));
        items.add(new SampleModel("Second item"));
        items.add(new SampleModel("Third item"));
        items.add(new SampleModel("The ultimate item"));
        items.add(new SampleModel("Last item"));
        items.add(new SampleModel("Lorem ipsum"));
        items.add(new SampleModel("Dolor sit"));
        items.add(new SampleModel("Some random word"));
        items.add(new SampleModel("guess who's back"));
        return items;
    }

Затем вам просто нужно добавить следующие строки, где вы хотите показать диалог:

new SimpleSearchDialogCompat(MainActivity.this, "Search...",
                        "What are you looking for...?", null, createSampleData(),
                new SearchResultListener<SampleModel>() {
                            @Override
                            public void onSelected(BaseSearchDialogCompat dialog,
                                                   SampleModel item, int position) {
                                // If filtering is enabled, [position] is the index of the item in the filtered result, not in the unfiltered source
                                toast(item.getTitle());
                                dialog.hide();
                            }
                        }).show();

Параметры конструктора:

SimpleSearchDialogCompat(Context context, String title, String searchHint,
                                    @Nullable Filter filter, ArrayList<T> items,
                                    SearchResultListener<T> searchResultListener)

Добавление представления загрузки в SimpleSearchDialogCompat

Просто используйте setLoading(true) для отображения и setLoading(false) для скрытия его на экземпляре SimpleSearchDialogCompat.

Расширенное использование

Макет

Я использовал этот макет для простого диалога поиска, но вы можете использовать что-то ещё. Конечно, ваш макет должен иметь эти два представления:

  • TextField для использования в качестве ввода ключа поиска
  • ListContainer для отображения результатов в нём

Диалог поиска

Вы можете использовать свои собственные макеты, адаптеры и параметры поиска, создав класс, наследующий BaseSearchDialogCompat, посмотрите на SimpleSearchDialogCompat для примера того, как это можно сделать. Вам следует реализовать методы BaseSearchDialogCompat:

    // обрабатывать ваше представление с этим
    protected abstract void getView(Component view);
    // Идентификатор вашего пользовательского макета
    protected abstract int getLayoutResId();
    // Идентификатор TextField, который вы использовали в своём пользовательском макете
    защищённый абстрактный int getSearchBoxId();
    // Идентификатор ListContainer, который вы использовали в вашем пользовательском макете **Защищённый абстрактный метод getRecyclerViewId()**

### Фильтр поиска

Вы можете использовать собственные фильтры для поиска текста. Тот, что используется в SimpleSearchDialogCompat, проверяет ключ поиска и, если элемент и ключ частично совпадают по буквам, добавляет этот элемент к результатам. Также, если для CheckLCS установлено значение true, он проверит, превышает ли количество совпадающих букв заданный AccuracyPercentage, и элемент будет добавлен к результатам.

### Адаптер

Тот, что используется в SimpleSearchDialogCompat, очень прост, несмотря на свою длину. Основная функциональность находится в методе initializeViews. Вы можете создавать свои собственные адаптеры и использовать их вместо этого.

### StringsHelper

У него есть два метода, которые вы можете использовать для выделения результатов.

```java
/**
     * 给字体穿插上色
     *
     * @param str1           列表中某一项字符串
     * @param str2           搜索的字符
     * @param defaultColor   默认的颜色
     * @param highlightColor 红色
     * @param textSize       字体大小
     * @return 封装好的颜色字体
 */
RichTextBuilder highlightLCS(String str1, String str2, int defaultColor, int highlightColor,int textSize);

// Returns the LCS(Longest Common Subsequence) of two strings
String lcs(String text1, String text2)

Запуск Entry

Через DevEco studio и скачав SDK, измените версию classpath в файле build.gradle в разделе dependencies → classpath на соответствующую версию (то есть версию, которую вы используете в новом проекте, созданном в вашей IDE).

Лицензии

版权所有2020-2025

根据Apache许可证2.0版(“许可证”)获得许可;
除非符合许可证,否则不得使用此文件。
您可以从以下网址获取许可证副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件
根据许可证发放,按“原样”发放,
没有任何明示或暗示的保证或条件。
请参阅许可证以了解特定语言控制权限和
许可证的限制。

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

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

Введение

Описание недоступно Расширить Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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