Поиск-диалог
Великолепный настраиваемый диалог поиска со встроенными опциями поиска.
Через 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)
Просто используйте setLoading(true)
для отображения и setLoading(false)
для скрытия его на экземпляре SimpleSearchDialogCompat.
Я использовал этот макет для простого диалога поиска, но вы можете использовать что-то ещё. Конечно, ваш макет должен иметь эти два представления:
Вы можете использовать свои собственные макеты, адаптеры и параметры поиска, создав класс, наследующий 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)
Через DevEco studio и скачав SDK, измените версию classpath в файле build.gradle в разделе dependencies → classpath на соответствующую версию (то есть версию, которую вы используете в новом проекте, созданном в вашей IDE).
版权所有2020-2025
根据Apache许可证2.0版(“许可证”)获得许可;
除非符合许可证,否则不得使用此文件。
您可以从以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件
根据许可证发放,按“原样”发放,
没有任何明示或暗示的保证或条件。
请参阅许可证以了解特定语言控制权限和
许可证的限制。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )