Une boîte de dialogue de recherche impressionnante et personnalisable avec des options de recherche intégrées.
Ajoutez d’abord jitpack au fichier build.gradle de vos projets
allprojects {
repositories {
.. .
maven { url " https://jitpack.io " }
}
}
Ajoutez ensuite la dépendance dans le fichier build.gradle des modules
dependencies {
implementation ' com.github.mirrajabi:search-dialog:1.2.4 '
}
si vous souhaitez simplement utiliser la boîte de dialogue de recherche simple, vous devez d'abord fournir des éléments consultables. pour y parvenir, vous devez implémenter Searchable dans votre modèle.
vous pouvez voir le SampleSearchModel par exemple :
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 ;
}
}
générez maintenant quelques options de recherche dans votre activité :
private ArrayList < SampleSearchModel > createSampleData (){
ArrayList < SampleSearchModel > items = new ArrayList <>();
items . add ( new SampleSearchModel ( "First item" ));
items . add ( new SampleSearchModel ( "Second item" ));
items . add ( new SampleSearchModel ( "Third item" ));
items . add ( new SampleSearchModel ( "The ultimate item" ));
items . add ( new SampleSearchModel ( "Last item" ));
items . add ( new SampleSearchModel ( "Lorem ipsum" ));
items . add ( new SampleSearchModel ( "Dolor sit" ));
items . add ( new SampleSearchModel ( "Some random word" ));
items . add ( new SampleSearchModel ( "guess who's back" ));
return items ;
}
alors il vous suffit d'ajouter les lignes ci-dessous où vous souhaitez afficher la boîte de dialogue :
new SimpleSearchDialogCompat ( MainActivity . this , "Search..." ,
"What are you looking for...?" , null , createSampleData (),
new SearchResultListener < SampleSearchModel >() {
@ Override
public void onSelected ( BaseSearchDialogCompat dialog ,
SampleSearchModel item , int position ) {
// If filtering is enabled, [position] is the index of the item in the filtered result, not in the unfiltered source
Toast . makeText ( MainActivity . this , item . getTitle (),
Toast . LENGTH_SHORT ). show ();
dialog . dismiss ();
}
}). show ();
Les paramètres du constructeur sont
SimpleSearchDialogCompat ( Context context , String title , String searchHint ,
@ Nullable Filter filter , ArrayList < T > items ,
SearchResultListener < T > searchResultListener )
Utilisez simplement setLoading(true)
pour l'afficher et setLoading(false)
pour le masquer sur une instance de SimpleSearchDialogCompat.
Si vous souhaitez modifier les couleurs par défaut, remplacez simplement ces couleurs dans votre colors.xml
ou partout où vous le souhaitez, comme ceci.
< color name = " searchDialogResultColor " />
< color name = " searchDialogResultHighlightColor " />
J'ai utilisé cette mise en page pour une boîte de dialogue de recherche simple, mais vous pouvez utiliser n'importe quoi d'autre. Bien sûr, votre mise en page doit avoir ces deux vues :
Vous pouvez utiliser vos mises en page personnalisées, vos adaptateurs et vos options de recherche en créant une classe héritant de BaseSearchDialogCompat. Jetez un œil à SimpleSearchDialogCompat pour voir un exemple de la façon dont cela peut être fait. Vous devez implémenter les méthodes BaseSearchDialogCompat :
// handle your view with this one
protected abstract void getView ( View view );
// Id of your custom layout
@ LayoutRes protected abstract int getLayoutResId ();
// Id of the search edittext you used in your custom layout
@ IdRes protected abstract int getSearchBoxId ();
// Id of the recyclerview you used in your custom layout
@ IdRes protected abstract int getRecyclerViewId ();
Vous pouvez utiliser vos filtres personnalisés pour la recherche de texte. Celui utilisé dans SimpleSearchDialogCompat est SimpleSearchFilter. Il vérifie la clé de recherche et si un élément et la clé avaient partiellement exactement les mêmes lettres, il ajoutera cet élément aux résultats et aussi si le CheckLCS était défini sur true, il vérifiera si le nombre de lettres correspondantes était supérieur au pourcentage de précision donné. l'élément sera ajouté aux résultats
celui utilisé dans SimpleSearchDialogCompat est si simple malgré son trop long. la fonctionnalité principale se trouve dans la méthode initializeViews. vous pouvez créer vos adaptateurs personnalisés et l'utiliser à la place de celui-ci
il dispose de deux méthodes que vous pouvez utiliser pour mettre en évidence les résultats.
/*
* Returns a SpannableString with
* highlighted LCS(Longest Common Subsequence)
* of two strings with the givven color
*/
SpannableStringBuilder highlightLCS ( String text1 , String text2 , int highlightColor );
// Returns the LCS(Longest Common Subsequence) of two strings
String lcs ( String text1 , String text2 )
1.2.4 - Added an option to SimpleSearchDialogCompat so that the dialog cancellation on touching outside the dialog can be customized.
1.2.3 - Changed minSdkVersion to 14. Added getter for the title textview of simple search dialog. Improved results sorting.
1.2.2 - Gradle tools version and dependencies were updated.
1.2.1 - Added an option for changing text color and highlight color of default adapter.
1.2 - Added getter for views in simple search dialog and an option to turn off the auto filtering on search edittext.
1.1.1 - Fixes drawable overriding issue.
1.1 - Added loading feature.