2016-07-12 7 views
-1

Мой код выглядит следующим образом:предупреждение исключение NullPointer при установке адаптера к ListView

public class EventActivity extends AppCompatActivity { 
     ListView listView; 
     ItemAdapter adapter; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.attaction_list); 

      ArrayList<Item> items = new ArrayList<>(); 
      items.add(new Item("a", "a", a)); 
      items.add(new Item("b", "b", b)); 
      items.add(new Item("c", "c", c)); 

      adapter = new ItemAdapter(this, items, R.color.event); 
      listView = (ListView) findViewById(R.id.list); 
      if(adapter != null) { 
       listView.setAdapter(adapter); 
      } 
     } 
    } 

Andoid Студия редактор указывает, что listView.setAdapter(adapter) может вызвать исключение NullPointer. Может ли кто-нибудь объяснить, откуда это предупреждение, и как его исправить?

+0

Класс ItemAdapter мой настроен класс адаптера, который расширяет ArrayAdapter. –

+0

Можете ли вы отобразить ItemAdapter и XML-макет attaction_list? –

+0

Возможный дубликат [Кнопка может вызывать исключение нулевого указателя (Android Studio)] (http://stackoverflow.com/questions/36204297/button-may-produce-null-pointer-exception-android-studio) –

ответ

0

Если посмотреть на документ для разработчиков по адресу: https://developer.android.com/reference/android/app/Activity.html#findViewById(int)

findViewById

View findViewById (int id)

находит вид, который был идентифицирован с помощью атрибута ид из XML, который был обработан в OnCreate (Bundle).

Parameters

ID INT

Returns

Посмотреть мнение, если найден или нуль в противном случае.

где это предупреждение исходит от

Итак, вы видите, что переменная listView может быть пустым после выполнения listView = (ListView) findViewById(R.id.list);. Поэтому вы получите предупреждение!

, как это исправить

Вы можете указать выражение нулевой проверки в if-условие следующим образом:

if(adapter != null && listView !=null) { 
    listView.setAdapter(adapter); 
} 
+0

Спасибо Sanjeev, я понимаю, что идентификатор не найден и поэтому возвращает null. Но мой вопрос заключается в том, как это исправить. пс. Я просто перезагрузил страницу и прочитал новое издание. Кажется, работает, THX! –

Смежные вопросы