Адаптер AutoCompleteTextView не установлен

У меня есть класс, который извлекает все предложения на основе текста, введенного с сервера. В postExecute() я добавляю все предложения в свой ArrayList и хочу установить этот массив в качестве адаптера. Но это не работает.

Код onCreate():

     t1 = (AutoCompleteTextView) 
            findViewById(R.id.autoCompleteTextView1);



    t1.setThreshold(1);
    t1.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

           //DoPost() is the class fetching data from server
            new DoPOST().execute("");

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

    ArrayAdapter<String> adp=new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line,Names);
    t1.setAdapter(adp);

Когда я меняю текст, я вижу ответ сервера, возвращающий данные. И в postExecute():

for(int i=0 ;i<js.length();i++){
            try {
                JSONObject tokenobj=js.getJSONObject(i);
                Names.add(tokenobj.get("suggestion").toString());
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }

Таким образом, предложения поступают в arraylist, но они не отображаются мгновенно в виде раскрывающегося списка. Пожалуйста, помогите, заранее спасибо.


person Prakhar    schedule 21.05.2015    source источник
comment
см. stackoverflow.com/q/30366972/2252830   -  person pskink    schedule 21.05.2015


Ответы (1)


Когда данные (в данном случае ArrayList) изменяются, вам нужно вызвать .notifyDataSetChanged() для экземпляра адаптера, чтобы представление перерисовывалось.

person Kelevandos    schedule 21.05.2015