ListView to show List of data and search inside it.
- List refresh as changing the query text.
- The changed texts(queries) emmit through an Observable.
Base class name "RxSearchList"
public static RxSearchList create(...)public RxSearchList setShowLogo(boolean visible)public RxSearchList show(FragmentManager manager)public RxSearchList showWithQuery(FragmentManager manager, String defaultQuery)public Observable<Item> results()public Observable<Boolean> onCancel()public Observable<Boolean> onDismiss()public void setState(Lce itemsObservable)
With using of RxBinding
-
Declare an instance of "RxSearchList" in
onCreate()method of yourActivity.
rxSearchList = RxSearchList.create("the hint od search view", "the text of search view", false, null); -
Bind click in
onStart()method of yourActivity.
Use filter() to prevent performing duplicate queries at the first launch.
RxView.clicks(btnShowList)
.map(t -> rxSearchList.setShowLogo(true))
.map(t -> rxSearchList.showWithQuery(getSupportFragmentManager(), "job with code = 20"))
.switchMap(t -> Observable.just("").filter(ss -> true))
.mergeWith(rxSearchList.getQueryIntent())
.switchMap(DataMocker::getList) // get query results from API/Local
.observeOn(AndroidSchedulers.mainThread())
.subscribe(rxSearchList::setState)Be careful to dispose above Disposable in onPause() method.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.Mojtaba-Shafaei:AndroidRxSearchList:1.0.1'
}

