krishnakapil / MaterialSeachView

Android Material Design Style Custom Search View
99 stars 45 forks source link

Not working on android naughat #12

Open ErDeepChand opened 7 years ago

ErDeepChand commented 7 years ago

Please check it is not working on naughat devices. Showing no dropdown though filter returns the suggestions This is my SearchAdapter class plz check and let me know plz. public class SearchAdapter extends BaseAdapter implements Filterable {

public static ArrayList<String> data;
private SearchAdapter mContextAdapter;
public MaterialSearchView searchView;
private String[] suggestions;
private LayoutInflater inflater;

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

@Override
public Filter getFilter() {
    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            FilterResults filterResults = new FilterResults();
            if (!TextUtils.isEmpty(constraint)) {

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

                for (String string : suggestions) {
                    if (string.toLowerCase().contains(constraint.toString().toLowerCase())) {
                        if (searchData.size() < 5) {
                            searchData.add(string);
                        }
                    }
                }

                // 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;
                Log.e("SearchAdapter", "publishResults: " + data.size());
                /*String[] searchArr = data.toArray(new String[data.size()]);
                Log.e("SearchAdapter", "onPostExecute: "+ Arrays.asList(searchArr).toString());
                searchView.setAdapter(new SearchAdapter(getApplicationContext(), searchArr, searchView));*/
                notifyDataSetChanged();
            }
        }
    };
    return filter;
}

@Override
public int getCount() {
    return data.size();
}

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

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    SuggestionsViewHolder viewHolder;

    if (convertView == null) {
        convertView = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
        viewHolder = new SuggestionsViewHolder(convertView);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (SuggestionsViewHolder) convertView.getTag();
    }

    String currentListData = (String) getItem(position);

    viewHolder.textView.setText(currentListData);

    return convertView;
}

private class SuggestionsViewHolder {

    TextView textView;

    public SuggestionsViewHolder(View convertView) {
        textView = (TextView) convertView.findViewById(android.R.id.text1);
    }
}

}