0

This is the code I am using for custom adapter for my autocomplete textview

I tried this solution link This solution says that item count may be 0 but in my case item count is not 0.

It never goes to getView() method. I try it calling from Fragment, I tried calling it from Activity

I tried solution from this answer as well link but it doesn't work.

It never goes inside the getView() method.

public class BusCityListAdapter extends ArrayAdapter<BusCityList> {
    private ArrayList<BusCityList> cityList;
    private ArrayList<BusCityList> tempCityList;
    private ArrayList<BusCityList> suggestionsList;

    public BusCityListAdapter(Context context, ArrayList<BusCityList> objects) {
        super(context, android.R.layout.simple_list_item_1, objects);
        this.cityList = objects;
        this.tempCityList = new ArrayList<BusCityList>(objects);
        this.suggestionsList = new ArrayList<BusCityList>(objects);
    }

    @Override
    public int getCount() {
        System.out.println("Main List Size=="+cityList.size());
        System.out.println("Temp List Size=="+tempCityList.size());
        System.out.println("Suggestion List Size=="+suggestionsList.size());
        return cityList.size();
    }

    @Override
    public BusCityList getItem(int position) {
        return cityList.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        System.out.println("Inside GetView");

        BusCityList busCity = getItem(position);
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.bus_city_name_layout, parent, false);
        }

        MyTextView bus_name_label = (MyTextView) convertView.findViewById(R.id.bus_name_label);
        if (bus_name_label != null)
            bus_name_label.setText(busCity.getCity_name());
        // Now assign alternate color for rows
        return convertView;
    }

    @Override
    public Filter getFilter() {
        return myFilter;
    }

    Filter myFilter = new Filter() {
        @Override
        public CharSequence convertResultToString(Object resultValue) {
            BusCityList busCity = (BusCityList) resultValue;
            return busCity.getCity_name();
        }

        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            if (constraint != null) {
                suggestionsList.clear();
                for (BusCityList city : tempCityList) {
                    if (city.getCity_name().toLowerCase().startsWith(constraint.toString().toLowerCase())) {
                        suggestionsList.add(city);
                    }
                }

                FilterResults filterResults = new FilterResults();
                filterResults.values = suggestionsList;
                filterResults.count = suggestionsList.size();
                return filterResults;
            } else {
                return new FilterResults();
            }
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            ArrayList<BusCityList> c = (ArrayList<BusCityList>) results.values;
            if (results != null && results.count > 0) {
                clear();
                for (BusCityList city : c) {
                    add(city);
                    notifyDataSetChanged();
                }
            }
        }
    };


}

Here is the code where I am setting the adapter to AutoCompleteTextView

AutoCompleteTextView txtToWhere = (AutoCompleteTextView) v.findViewById(R.id.txtToWhere);

busCityListAdapter = new BusCityListAdapter(getActivity(), arrayList);
txtToWhere.setAdapter(busCityListAdapter);
busCityListAdapter.notifyDataSetChanged();
Sandeep Londhe
  • 405
  • 1
  • 6
  • 17

0 Answers0