Как я могу создать значки для пунктов меню в ListView Android?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

23
задан Meenal 27 December 2017 в 10:27
поделиться

2 ответа

То, что я обычно делаю для 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;
}
17
ответ дан jasonhudgins 29 November 2019 в 03:03
поделиться

Из документов Google для ArrayAdapter.

, Чтобы использовать что-то другое, чем TextViews для дисплея массива, например, ImageViews, или иметь некоторые данные помимо toString () результаты заполняют представления, переопределяют getView (интервал, Представление, ViewGroup) для возврата типа представления, которое Вы хотите.

1
ответ дан Feet 29 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: