AutoCompleteTextView не показывает раскрывающийся список, получил предупреждение

У меня есть ArrayList с 60-70 элементами. Я установил адаптер для AutoCompleteTextView следующим образом.

AutoCompleteTextView  mRecipient = (AutoCompleteTextView) this.findViewById(R.id.recipient);
        mRecipient.setThreshold(1);
        Log.i("Array list", ""+names);// Here I got the arrayList
        ArrayAdapter<String> nameadapter=new ArrayAdapter<String>(MyClass.this, android.R.layout.simple_list_item_1, names);
        mRecipient.setAdapter(nameadapter);

Но раскрывающийся список не отображается, и я получил предупреждение (не ошибка) в Logcat.

04-21 17:15:53.017: W/Filter(15093): An exception occured during performFiltering()!
04-21 17:15:53.017: W/Filter(15093): java.lang.NullPointerException
04-21 17:15:53.017: W/Filter(15093):    at android.widget.ArrayAdapter$ArrayFilter.performFiltering(ArrayAdapter.java:437)
04-21 17:15:53.017: W/Filter(15093):    at android.widget.Filter$RequestHandler.handleMessage(Filter.java:234)
04-21 17:15:53.017: W/Filter(15093):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-21 17:15:53.017: W/Filter(15093):    at android.os.Looper.loop(Looper.java:123)
04-21 17:15:53.017: W/Filter(15093):    at android.os.HandlerThread.run(HandlerThread.java:60)

Также у меня есть ListView ниже этого, который сейчас пуст.

Кто-нибудь может понять, что означает это предупреждение?


person Nizam    schedule 19.07.2013    source источник
comment
Убедитесь, что names не равно нулю   -  person Pankaj Kumar    schedule 19.07.2013
comment
На самом деле убедитесь, что ни один из элементов в names не является null.   -  person Vikram    schedule 19.07.2013
comment
names не является нулевым, но внутри списка есть нулевые элементы. В этом проблема?   -  person Nizam    schedule 19.07.2013
comment
Большое спасибо. нулевые значения внутри списка были проблемой. @vikram Я могу проверить, опубликуете ли вы ответ.   -  person Nizam    schedule 19.07.2013
comment
@Nizam, нет проблем, чувак, опубликовал предложение в качестве ответа.   -  person Vikram    schedule 19.07.2013


Ответы (1)


Предупреждение исходит из следующего фрагмента кода в ArrayAdapter.performFiltering(CharSequence):

 String prefixString = prefix.toString().toLowerCase();  // entered by user
 final ArrayList<T> values = mOriginalValues;
 final int count = values.size();
 final ArrayList<T> newValues = new ArrayList<T>(count); // this will be returned
 for (int i = 0; i < count; i++) {
     final T value = values.get(i);                      // in your case, 'value' is null at times
     final String valueText = value.toString().toLowerCase();  // the warning

     // First match against the whole, non-splitted value
     if (valueText.startsWith(prefixString)) {
         newValues.add(value);
     } else {
         final String[] words = valueText.split(" ");
         final int wordCount = words.length;
         for (int k = 0; k < wordCount; k++) {
             if (words[k].startsWith(prefixString)) {
                 newValues.add(value);
                 break;
             }
         }
     }
 }

Итак, проверьте значения null в names.

person Vikram    schedule 19.07.2013