michaelprimez / searchablespinner

Searchable Spinner
Apache License 2.0
314 stars 102 forks source link

How do I add the Spinner search feature #42

Closed broscr closed 3 years ago

broscr commented 5 years ago

I'm using this library for that. But I could not write the filter class. I've looked at all the data about the library and tried it, but I couldn't

public class CustomArrayAdapter extends ArrayAdapter<Meydanlar> implements View.OnClickListener,Filterable {

    private Context context;
    private ArrayList<Meydanlar> meydanlars;
    private ArrayList<String> mBackupStrings;

    public CustomArrayAdapter(Context context,int textViewResourceId,ArrayList<Meydanlar> meydanlars){
        super(context,textViewResourceId,meydanlars);
        this.context = context;
        this.meydanlars = meydanlars;
    }

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

    @Override
    public int getItemViewType(int position) {
        return android.R.layout.simple_spinner_dropdown_item;
    }

    @Override
    public Meydanlar getItem(int position) {
        return meydanlars.get(position);
    }

    @Override
    public int getViewTypeCount() {
        return 1;
    }

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

    @NonNull
    @Override
    public View getView(int position, View convertView, @NonNull ViewGroup parent) {
        TextView name,indic;
        View view = convertView;
        if (view == null){
            LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = layoutInflater.inflate(R.layout.spinner_row,parent,false);
        }
        name = view.findViewById(R.id.meydanIsmiTextRow);
        indic = view.findViewById(R.id.meydanIndicTextRow);
        name.setText(meydanlars.get(position).getIstasyon_name());
        indic.setText(meydanlars.get(position).getIstasyon_indic());

        return view;
    }

    @Override
    public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
        return this.getView(position,convertView,parent);
    }

    @NonNull
    @Override
    public Filter getFilter() {
        return super.getFilter();
    }

    @Override
    public void onClick(View v) {

    }

}