Home

Awesome

Android SearchAdapter

Simple way to filter your ListView or GridView content. Just extend parameterized SearchAdapter class and override getView() method.

#Example

#Usage 1 Extend your adapter class from SearchAdapter and override getView() method.

public class MyAdapter extends SearchAdapter<Movie> {
    class ViewHolder {
        @InjectView(R.id.serial_title) TextView title;
        @InjectView(R.id.serial_original_title) TextView enTitle;
        @InjectView(R.id.serial_poster) ImageView poster;

        public ViewHolder(View view) {
            ButterKnife.inject(this, view);
        }
    }

    public MyAdapter(List<Movie> movies, Context context) {
        super(movies, context);
    }

    @Override public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if(convertView == null) {
            convertView = layoutInflater.inflate(R.layout.grid_view_item, null);
            viewHolder = new ViewHolder(convertView);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder)convertView.getTag();
        }
        viewHolder.title.setText(filteredContainer.get(position).getTitle());
        viewHolder.enTitle.setText(filteredContainer.get(position).getEnTitle());
        viewHolder.poster.setImageDrawable(context.getResources().getDrawable(filteredContainer.get(position).getPoster()));
        return convertView;
    }
}

2 Register filter for your content. Pass to method class type and field name for searching.

final SearchAdapter adapter = new MyAdapter(movies, this).registerFilter(Movie.class, "enTitle");
gridView.setAdapter(adapter);

3 Call filter method from anywhere you want.

adapter.filter(string);

Your class should contain getters for fields.

public class Movie {
    private String title, enTitle;
    private int poster;

    public String getTitle() {
        return title;
    }

    public String getEnTitle() {
        return enTitle;
    }

    public int getPoster() {
        return poster;
    }
}

For more details see Example.

#License

    Copyright 2015 Boris Korogvich
    
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
    http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.