Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.android.tools.build:gradle:2.3.1'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
12 changes: 6 additions & 6 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ buildscript {
}

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
minSdkVersion 14
targetSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.4.0"
versionName "1.4.1"
}
buildTypes {
release {
Expand All @@ -30,8 +30,8 @@ android {

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
}

publish {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.speech.RecognizerIntent;
import android.support.annotation.DrawableRes;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
Expand Down Expand Up @@ -74,7 +75,7 @@ public class MaterialSearchView extends FrameLayout implements Filter.FilterList
private boolean ellipsize = false;

private boolean allowVoiceSearch;
private Drawable suggestionIcon;
//private Drawable suggestionIcon;

private Context mContext;

Expand Down Expand Up @@ -132,10 +133,6 @@ private void initStyle(AttributeSet attrs, int defStyleAttr) {
setSuggestionBackground(a.getDrawable(R.styleable.MaterialSearchView_searchSuggestionBackground));
}

if (a.hasValue(R.styleable.MaterialSearchView_searchSuggestionIcon)) {
setSuggestionIcon(a.getDrawable(R.styleable.MaterialSearchView_searchSuggestionIcon));
}

if (a.hasValue(R.styleable.MaterialSearchView_android_inputType)) {
setInputType(a.getInt(R.styleable.MaterialSearchView_android_inputType, EditorInfo.TYPE_NULL));
}
Expand Down Expand Up @@ -336,10 +333,6 @@ public void setBackIcon(Drawable drawable) {
mBackBtn.setImageDrawable(drawable);
}

public void setSuggestionIcon(Drawable drawable) {
suggestionIcon = drawable;
}

public void setInputType(int inputType) {
mSearchSrcTextView.setInputType(inputType);
}
Expand Down Expand Up @@ -407,21 +400,30 @@ public void setAdapter(ListAdapter adapter) {
startFilter(mSearchSrcTextView.getText());
}

public void setSuggestions(String[] suggestions, @DrawableRes int suggestionIconRes) {
SuggestionItem[] suggestionItems = new SuggestionItem[suggestions.length];
for (int i = 0; i < suggestions.length; i++) {
String text = suggestions[i];
suggestionItems[i] = new SuggestionItem(false, suggestionIconRes, text);
}
setSuggestions(suggestionItems);
}

/**
* Set Adapter for suggestions list with the given suggestion array
*
* @param suggestions array of suggestions
*/
public void setSuggestions(String[] suggestions) {
public void setSuggestions(SuggestionItem[] suggestions) {
if (suggestions != null && suggestions.length > 0) {
mTintView.setVisibility(VISIBLE);
final SearchAdapter adapter = new SearchAdapter(mContext, suggestions, suggestionIcon, ellipsize);
final SearchAdapter adapter = new SearchAdapter(mContext, suggestions, ellipsize);
setAdapter(adapter);

setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
setQuery((String) adapter.getItem(position), submit);
setQuery(adapter.getItem(position).getText(), submit);
}
});
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,21 @@
*/
public class SearchAdapter extends BaseAdapter implements Filterable {

private ArrayList<String> data;
private String[] suggestions;
private Drawable suggestionIcon;
private ArrayList<SuggestionItem> data;
private SuggestionItem[] suggestions;
private LayoutInflater inflater;
private boolean ellipsize;

public SearchAdapter(Context context, String[] suggestions) {
public SearchAdapter(Context context, SuggestionItem[] suggestions) {
inflater = LayoutInflater.from(context);
data = new ArrayList<>();
this.suggestions = suggestions;
}

public SearchAdapter(Context context, String[] suggestions, Drawable suggestionIcon, boolean ellipsize) {
public SearchAdapter(Context context, SuggestionItem[] suggestions, boolean ellipsize) {
inflater = LayoutInflater.from(context);
data = new ArrayList<>();
this.suggestions = suggestions;
this.suggestionIcon = suggestionIcon;
this.ellipsize = ellipsize;
}

Expand All @@ -48,28 +46,35 @@ public Filter getFilter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (!TextUtils.isEmpty(constraint)) {

// Retrieve the autocomplete results.
List<String> searchData = new ArrayList<>();
// Retrieve the autocomplete results.
List<SuggestionItem> searchData = new ArrayList<>();

for (String string : suggestions) {
if (string.toLowerCase().startsWith(constraint.toString().toLowerCase())) {
searchData.add(string);
if (TextUtils.isEmpty(constraint)) {
for (SuggestionItem suggestionItem : suggestions) {
if (suggestionItem.isSticky()) {
searchData.add(suggestionItem);
}
}
} else {
for (SuggestionItem suggestionItem : suggestions) {
String suggestionText = suggestionItem.getText();
if (suggestionItem.isSticky() || suggestionText.toLowerCase().startsWith(constraint.toString().toLowerCase())) {
searchData.add(suggestionItem);
}
}

// Assign the data to the FilterResults
filterResults.values = searchData;
filterResults.count = searchData.size();
}

// Assign the data to the FilterResults
filterResults.values = searchData;
filterResults.count = searchData.size();
return filterResults;
}

@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.values != null) {
data = (ArrayList<String>) results.values;
data = (ArrayList<SuggestionItem>) results.values;
notifyDataSetChanged();
}
}
Expand All @@ -83,7 +88,7 @@ public int getCount() {
}

@Override
public Object getItem(int position) {
public SuggestionItem getItem(int position) {
return data.get(position);
}

Expand All @@ -105,9 +110,10 @@ public View getView(int position, View convertView, ViewGroup parent) {
viewHolder = (SuggestionsViewHolder) convertView.getTag();
}

String currentListData = (String) getItem(position);
SuggestionItem currentListData = getItem(position);

viewHolder.textView.setText(currentListData);
viewHolder.textView.setText(currentListData.getText());
viewHolder.imageView.setImageResource(currentListData.getIconRes());
if (ellipsize) {
viewHolder.textView.setSingleLine();
viewHolder.textView.setEllipsize(TextUtils.TruncateAt.END);
Expand All @@ -123,10 +129,7 @@ private class SuggestionsViewHolder {

public SuggestionsViewHolder(View convertView) {
textView = (TextView) convertView.findViewById(R.id.suggestion_text);
if (suggestionIcon != null) {
imageView = (ImageView) convertView.findViewById(R.id.suggestion_icon);
imageView.setImageDrawable(suggestionIcon);
}
imageView = (ImageView) convertView.findViewById(R.id.suggestion_icon);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.miguelcatalan.materialsearchview;

/**
* Created by timob on 14.04.2017.
*/
public class SuggestionItem {

private boolean mSticky;

private int suggestionIconRes;

private String suggestionText;

public SuggestionItem(boolean mSticky, int suggestionIconRes, String suggestionText) {
this.mSticky = mSticky;
this.suggestionIconRes = suggestionIconRes;
this.suggestionText = suggestionText;
}

public boolean isSticky() {
return mSticky;
}

public int getIconRes() {
return suggestionIconRes;
}

public String getText() {
return suggestionText;
}
}
10 changes: 5 additions & 5 deletions sample/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
applicationId "com.miguelcatalan.materialsearchview.sample"
minSdkVersion 14
targetSdkVersion 23
targetSdkVersion 25
versionCode 6
versionName "1.3.1"
}
Expand All @@ -22,6 +22,6 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':library')
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ protected void onCreate(Bundle savedInstanceState) {
searchView = (MaterialSearchView) findViewById(R.id.search_view);
searchView.setVoiceSearch(false);
searchView.setCursorDrawable(R.drawable.color_cursor_white);
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions), R.drawable.ic_suggestion);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ protected void onCreate(Bundle savedInstanceState) {
searchView.setVoiceSearch(false);
searchView.setCursorDrawable(R.drawable.custom_cursor);
searchView.setEllipsize(true);
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions), R.drawable.ic_suggestion);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ protected void onCreate(Bundle savedInstanceState) {
searchView.setVoiceSearch(false);
searchView.setCursorDrawable(R.drawable.custom_cursor);
searchView.setEllipsize(true);
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions), R.drawable.ic_suggestion);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ protected void onCreate(Bundle savedInstanceState) {
searchView = (MaterialSearchView) findViewById(R.id.search_view);
searchView.setVoiceSearch(false);
searchView.setCursorDrawable(R.drawable.custom_cursor);
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions), R.drawable.ic_suggestion);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ protected void onCreate(Bundle savedInstanceState) {
searchView = (MaterialSearchView) findViewById(R.id.search_view);
searchView.setVoiceSearch(true);
searchView.setCursorDrawable(R.drawable.color_cursor_white);
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions), R.drawable.ic_suggestion);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Expand Down