Android AutoCompleteTextView с данными из веб-службы, проблемы с отображением списка предложений

проблема, которую я не могу решить.

Чего я хочу достичь: Отображать предложения в AutoCompleteTextView, поступающие из вызова веб-службы. Окончательный результат должен выглядеть так:

enter image description here

То, что я сделал до сих пор:

В моем макете у меня есть AutoCompleteTextView, подобный этому

 <AutoCompleteTextView
            android:id="@+id/txtAutoSearch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:selectAllOnFocus="true"
            android:singleLine="true" />

В моем Activity у меня есть следующее:

 autoCompleteAdapter = new AdapterAutoComplete(context, ????? what should I have here?????, null);
         autoCompleteAdapter.setNotifyOnChange(true);
         txtAutoSearch.setAdapter(autoCompleteAdapter);
            txtAutoSearch.addTextChangedListener(new TextWatcher() {

                private boolean shouldAutoComplete = true;

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    shouldAutoComplete = true;

                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                }

                @Override
                public void afterTextChanged(Editable s) {
                    if (shouldAutoComplete) {
                       new GetAutoSuggestionsTask().execute(s.toString());
                    }
                }

            });

AsyncTask довольно прост, onPostExecute Я установил адаптер с данными, возвращаемыми веб-службой

autoCompleteAdapter = new AdapterAutoComplete(context, ????? what should I have here?????,result);
txtAutoSearch.setAdapter(autoCompleteAdapter);

Адаптер выглядит следующим образом:

public class AdapterAutoComplete  extends ArrayAdapter<Person> {

    private Activity activity;
    private List<Person> lstPersons;
    private static LayoutInflater inflater = null;

    public AdapterAutoComplete(Activity a, int textViewResourceId, List<Person> lst) {
        super(a, textViewResourceId, lst);
        activity = a;
        lstPersons = lst;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return lstPersons.size();
    }

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

    public Person getCurrentPerson(int position) {
        return lstPersons.get(position);
    }

    public void removeItem(int position) {
        lstPersons.remove(position);
    }

    public static class ViewHolder {
        public TextView txtName;
        public TextView txtProfession;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View vi = convertView;
        ViewHolder holder;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.people_list_item, null);
            Utils.overrideFonts(activity, vi);

            holder = new ViewHolder();
            holder.txtName = (TextView) vi.findViewById(R.id.txtName);
            holder.txtProfession = (TextView) vi.findViewById(R.id.txtProfession);

            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }

        Person o = lstPersons.get(position);

        if (o.name != null) {
            holder.txtName.setText(o.name);
        } else {
            holder.txtName.setText("N/A");
        }

        if (o.profession != null) {
            holder.txtProfession.setText(o.profession);
        } else {
            holder.txtProfession.setText("N/A");
        }
        return vi;
    }
}

Что происходит на самом деле:

  • веб-служба возвращает нужный мне список, поэтому данные доступны
  • в адаптере getView, похоже, не выполняется, поэтому я предполагаю, что в нем что-то не так.
  • нет списка предложений, отображаемого с моими значениями
  • Я понятия не имею, что мне нужно для конструктора адаптера, для textViewResourceId. Что я делаю неправильно? Я застрял, пожалуйста, помогите.
6
задан Alin 8 February 2012 в 11:18
поделиться