2015-06-24 3 views
0

Я выполнил справедливый бит Google-фу, но не могу понять, что случилось. Появится раскрывающийся список. Но AutoCompleteTextView не заполняется выбранным элементом! Может ли кто-нибудь помочь?AutoCompleteTextView, не заселяющий выбранным элементом

Я установил пользовательский адаптер в свой AutoCompleteTextView, который показывает пользовательский макет.

actv = (AutoCompleteTextView) root.findViewById(R.id.actv); 
actv.setAdapter(new MyCustomAutoCompleteAdapter(getActivity())); 

Вот важные части MyCustomAutoCompleteAdapter код:

public class MyCustomAutoCompleteAdapter extends ArrayAdapter<String> 
    implements Filterable { 

    Context mContext; 

    private ArrayList<String> resultList = new ArrayList<>(); 

    public MyCustomAutoCompleteAdapter(Context context) { 
    // is this the correct way to super? 
    super(context, R.layout.my_custom_layout); 
    mContext = context; 


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

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

    @Override 
    public String getItem(int index) { 
     return resultList.get(index); 
    } 

    @Override 
    public Filter getFilter() { 
     Filter filter = new Filter() { 
      @Override 
      protected FilterResults performFiltering(CharSequence constraint) { 
       FilterResults filterResults = new FilterResults(); 
       if (constraint != null) { 
        // Retrieve the autocomplete results. 
        resultList = doPlacesSearchQuery(constraint.toString()); 

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

      @Override 
      protected void publishResults(CharSequence constraint, FilterResults results) { 
       if (results != null && results.count > 0) { 
        notifyDataSetChanged(); 
       } 
       else { 
        notifyDataSetInvalidated(); 
       } 
      }}; 
     return filter; 
    } 

    private ArrayList<String> doPlacesSearchQuery(String query) { 

     ArrayList<String> retList = new ArrayList<>(); 

     ... // do my API call here 

     return retList; 
    } 
} 
+0

см. Мой ответ здесь http://stackoverflow.com/a/19860624/2252830 – pskink

ответ

0

я нашел свой ответ; Я действительно использовал неправильный суперконструктор.

public MyCustomAutoCompleteAdapter(Context context) { 
    super(context, 
      R.layout.my_custom_layout, 
      R.id.id_of_textview_in_my_custom_layout); 
    mContext = context; 
} 
Смежные вопросы