Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. То, что я обычно делаю для ListView, должно реализовать мой собственный Адаптер путем расширения удобного класса BaseAdapter. Один из абстрактных методов, которые Вы реализуете, будет getView () как предыдущий упомянутый плакат. Оттуда можно расширить расположение, содержащее ImageView, получить ссылку на него с помощью findViewById и установить изображение на любое drawable, которое Вы добавили в свои ресурсы.
public View getView(int position, View convertView, ViewGroup parent) {
View row = inflater.inflate(R.layout.menu_row, null);
ImageView icon = (ImageView) row.findViewById(R.id.icon);
icon.setImageResource(..your drawable's id...);
return view;
}
Из документов Google для ArrayAdapter.
, Чтобы использовать что-то другое, чем TextViews для дисплея массива, например, ImageViews, или иметь некоторые данные помимо toString () результаты заполняют представления, переопределяют getView (интервал, Представление, ViewGroup) для возврата типа представления, которое Вы хотите.