EasySearchView

Additional

Language
Java
Version
N/A
Created
Jun 5, 2017
Updated
Jun 7, 2017 (Retired)
Owner
Nicol Acosta (nicolkill)
Contributor
Nicol Acosta (nicolkill)
1
Activity
Badge
Generate
Download
Source code

Easy SearchView

Easy SearchView is a library that to implement search in any view only setting the data.

Features

  • Easy implementation
  • Good look

For more functions or bugs, create a issue.

Usage

Step 1:

Add gradle dependecy

dependencies {
  compile 'com.nicolkill:easysearchview:{latest_release}'
}

Step 2:

Add the following xml on your view:

<com.nicolkill.easysearchview.EasySearchView
    android:id="@+id/search_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

Step 3:

Add SearchElement interface on your class, in this example i use SuperRecyclerView for the list:

@LayoutResource(R.layout.row)
public class Option implements SearchElement {

    private static final String TAG = Option.class.getSimpleName();

    private int mOptionNumber;

    public Option(int number) {
        mOptionNumber = number;
    }

    @BindField(id = R.id.option_name)
    public String getOptionName() {
        return "Option " + (mOptionNumber + 1);
    }

    @Override
    public String toString() {
        return getOptionName();
    }

//  The following methods is of the interface

//  This define if the option can be showed on the search
    @Override
    public boolean isSearchPosibillity(String search) {
        return getOptionName().toLowerCase().contains(search.toLowerCase());
    }

//  get the principal object to use later
    @Override
    public Object getObject() {
        return this;
    }

//  the view resource on layouts
    @Override
    public int getViewRes() {
        return R.layout.row_search;
    }

//  this set the values on view
    @Override
    public void render(View view) {
        TextView textView = (TextView) view.findViewById(R.id.text);
        textView.setText(getOptionName());
    }
}

Step 4:

Get reference and set data:

EasySearchView searchView = (EasySearchView) findViewById(R.id.search_container);
searchView.setData(data);

Step 5:

Customize the adapter with the functions and listeners that you want

// click
adapter.setOnClickListener(new ClickListener<Option>() {
    @Override
    public void onItemSelected(View view, int position, Option element) {
        Snackbar.make(view, "Click option selected: " + element.getOptionName(), Snackbar.LENGTH_SHORT).show();
    }
});