Как получить идентификатор для изображений слайдера моего баннера - PullRequest
0 голосов
/ 12 июня 2018

У меня есть категория и список продуктов.Я могу открыть детали еды из списка, но когда я щелкаю изображение на слайдере баннера, я получаю ошибку ссылки на нулевой объект.Я думаю, что получение удостоверения личности, но я не знаю, как это исправить.Вот моя структура базы огня;

это моя структура базы данных

Я получаю id продуктов в FoodDetail.class следующим образом

categoryID = getIntent().getStringExtra("CategoryID");
_foodId = getIntent().getStringExtra("FoodId");

database = FirebaseDatabase.getInstance();
food = database.getReference("Food/" + categoryID + "/" + _foodId);

Я отправляю намерения изFoodList, как это;

    foodDetail.putExtra("FoodId", adapter.getItem(position).getFoodId());

   foodDetail.putExtra("CategoryID", adapter.getItem(position).getMenuId());

и это установочный метод Slider для home.class;

 private void setupSlider() {
    mslider = findViewById(R.id.slider);
    HashMap<String,String>image_list = new HashMap<>();
    final DatabaseReference ref_banner = db.getReference("Banner");

    ref_banner.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapShot : dataSnapshot.getChildren()) {
                Banner banner = postSnapShot.getValue(Banner.class);
                //gonna concat string name and id like
                //PİZZA_01 => and gonna use PİZZA show description , 01 for food id to click
                image_list.put(banner.getName() + "@@@" + banner.getFoodId(), banner.getImage());
            }
            for (String key : image_list.keySet()) {
                String[] keySplit = key.split("@@@");
                String nameOfFood = keySplit[0];
                String idOfFood = keySplit[1];

                //Create Slider
                final TextSliderView textSliderView = new TextSliderView(getBaseContext());
                textSliderView.description(nameOfFood)
                        .image(image_list.get(key))
                        .setScaleType(BaseSliderView.ScaleType.Fit)
                        .setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
                            @Override
                            public void onSliderClick(BaseSliderView slider) {
                                Intent intent = new Intent(Home.this, FoodDetail.class);
                                intent.putExtras(textSliderView.getBundle());
                                startActivity(intent);
                            }
                        });
                //add extra bundle
                textSliderView.bundle(new Bundle());
                textSliderView.getBundle().putString( "FoodId", idOfFood);
                Picasso picasso = Picasso.get();
                textSliderView.setPicasso(picasso);
                mslider.addSlider(textSliderView);

                //remove event after finish
                ref_banner.removeEventListener(this);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    mslider.setPresetTransformer(SliderLayout.Transformer.Background2Foreground);
    mslider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
    mslider.setCustomAnimation(new DescriptionAnimation());
    mslider.setDuration(3000);

}

в чем мой вопрос, как узнать подробности еды?Я имею в виду, когда я нажимаю на изображение, я хочу перейти к деталям еды, которые я нажал.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018
textSliderView.getBundle().putString( "CategoryID", idOfCategory);

после добавления я перестроил класс баннеров моей модели.У меня есть 3 переменные "name, image, foodId".Я добавил categoryID в Fireabase и класс модели.И у меня есть обновление здесь:

image_list.put(banner.getName() + "@@@" + banner.getCategoryID() + "@@@" + banner.getFoodId(), banner.getImage());

после этого добавил это:

String idOfCategory = keySplit[1];
String idOfFood = keySplit[2];

это решило мою проблему.Если это полезно для всех, вы можете использовать :)

0 голосов
/ 12 июня 2018

Вы только добавляете FoodId в свой пакет

textSliderView.getBundle().putString( "FoodId", idOfFood);

И вы пытаетесь получить CategoryID

categoryID = getIntent().getStringExtra("CategoryID");

Вы должны указать CategoryID как FoodId как

textSliderView.getBundle().putString( "FoodId", idOfFood);
textSliderView.getBundle().putString( "CategoryID", idOfCategory);
...