Задать вопрос
@MCjores

Почему при заполнении ListView вылетает OutOfBoundException?

Доброго времени суток!
При заполнении ListView вылетает ошибка, выхода за пределы массива хотя я добавляю всего 1 объект.
Код

public class RestaurantMenuFragment extends Fragment {

    private int DishPhoto;
    private String DishName;
    private int Weight;
    private int Price;
    private ArrayList<DishMenu> menus;
    private Context context;
    private ListView listView;


    
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.restaurant_menu, container, false);
        listView = view.findViewById(R.id.restaurant_menu_list);
        context = inflater.getContext();
        menus = new ArrayList<>();
        menus.add(new DishMenu("Яичница с Авокадо","Питательный и очень полезный завтрак для хорошего настроения",
                new String[]{"Яйца","авокадо","помидоры","мука пшеничная", "молоко", "лук","соль","черный перец","оливковое масло","укроп"},
                151,33,4.7,277,250,350));
        RestaurantMenuAdapter adapter = new RestaurantMenuAdapter(context, menus);
        
        listView.setAdapter(adapter);
        Log.i("RestMenuFragment", "return view");
        return view;

    }

    }


    private class RestaurantMenuAdapter extends ArrayAdapter<DishMenu> {

        private Context context;

        public RestaurantMenuAdapter(Context context, ArrayList<DishMenu> menu) {
            super(context, R.layout.restaurant_menu_item, menu);
            this.context = context;
        }


        @Override
        public int getCount() {
            return menus.size();
        }


        @Override
        public DishMenu getItem(int position) {
            return menus.get(position);
        }

        

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Log.i("getView", "position " + position);
            DishMenu menu = getItem(position);

            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View view = inflater.inflate(R.layout.restaurant_menu_item, parent, false);

            ImageView photoDish = view.findViewById(R.id.iv_menu_photo_dish);
            TextView nameDish = view.findViewById(R.id.tv_menu_name);
            TextView weightDish = view.findViewById(R.id.tv_menu_weight);
            Button addToBuyList = view.findViewById(R.id.btn_menu_add);

            if (menu != null) {
                
//                photoDish.setImageResource(menu.get);
                nameDish.setText(menu.getName());
                weightDish.setText(String.valueOf(menu.getWeight()));
                addToBuyList.append(String.valueOf(menu.getPrice()));
            }
           
            return view;
        }
    }
}

Дополнение
В другом фрагменте с точно такой же структурой все работает.
Может это важно-данный фрагмент является вложенным.
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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