Dialog pencarian yang mengagumkan dan dapat disesuaikan dengan opsi pencarian bawaan.
Pertama tambahkan jitpack ke file build.gradle proyek Anda
allprojects {
repositories {
.. .
maven { url " https://jitpack.io " }
}
}
Kemudian tambahkan ketergantungan pada file modul build.gradle
dependencies {
implementation ' com.github.mirrajabi:search-dialog:1.2.4 '
}
jika Anda hanya ingin menggunakan dialog pencarian sederhana terlebih dahulu Anda perlu menyediakan item yang dapat dicari. untuk mencapai hal ini, Anda harus menerapkan Searchable dalam model Anda.
Anda dapat melihat SampleSearchModel misalnya:
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 ;
}
}
sekarang buat beberapa opsi pencarian di aktivitas Anda:
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 ;
}
maka Anda hanya perlu menambahkan baris di bawah ini di mana Anda ingin menampilkan dialog:
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 ();
Parameter konstruktornya adalah
SimpleSearchDialogCompat ( Context context , String title , String searchHint ,
@ Nullable Filter filter , ArrayList < T > items ,
SearchResultListener < T > searchResultListener )
Cukup gunakan setLoading(true)
untuk menampilkan dan setLoading(false)
untuk menyembunyikannya pada instance SimpleSearchDialogCompat
Jika Anda ingin mengubah warna default, timpa saja warna-warna ini di colors.xml
Anda atau di mana pun Anda inginkan seperti ini.
< color name = " searchDialogResultColor " />
< color name = " searchDialogResultHighlightColor " />
Saya menggunakan tata letak ini untuk dialog pencarian sederhana tetapi Anda dapat menggunakan yang lain. Tentu saja tata letak Anda harus memiliki dua tampilan berikut:
Anda dapat menggunakan tata letak khusus, adaptor, dan opsi pencarian dengan membuat kelas yang mewarisi BaseSearchDialogCompat. Lihat SimpleSearchDialogCompat untuk melihat contoh cara melakukannya. Anda harus menerapkan metode 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 ();
Anda dapat menggunakan filter khusus untuk pencarian teks. Yang digunakan di SimpleSearchDialogCompat adalah SimpleSearchFilter. Ia memeriksa kunci pencarian dan jika suatu item dan kunci memiliki sebagian huruf yang sama persis maka item tersebut akan ditambahkan ke hasil dan juga jika CheckLCS disetel ke true, ia akan memeriksa apakah jumlah huruf yang cocok lebih besar dari AccuracyPercentage yang diberikan. item akan ditambahkan ke hasil
yang digunakan di SimpleSearchDialogCompat sangat sederhana meskipun terlalu panjang. fungsi utamanya ada dalam metode inisialisasiViews. Anda dapat membuat adaptor khusus dan menggunakannya sebagai pengganti adaptor ini
ini memiliki dua metode yang dapat Anda gunakan untuk menyorot hasilnya.
/*
* 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.