【问题标题】:Image Slider (Daimajia) using Firebase使用 Firebase 的图像滑块 (Daimajia)
【发布时间】:2017-01-01 09:18:39
【问题描述】:

我正在尝试将滑块上的图片和文本从 firebase 加载到 daimajia 滑块中,但没有显示任何内容,我正在使用 FirebaseRecyclerAdapter,这就是我在以下方法中的做法:-.

但我已经声明了

sliderShow = (SliderLayout) findViewById(R.id.slider);

onCreate 方法中

 public void GetAdverts()
    {


        FirebaseRecyclerAdapter<Advert,MainActivity.EventViewHolder> firebaseRecyclerAdapter_ = new FirebaseRecyclerAdapter<Advert, MainActivity.EventViewHolder>(Advert.class,
                R.layout.slider_image,
                MainActivity.EventViewHolder.class,
                mDatabase) {
            @Override
            protected void populateViewHolder(MainActivity.EventViewHolder viewHolder, final Advert model, final int position) {

            try{


                HashMap<String,String> url_maps = new HashMap<String, String>();
                List<Advert> itemlist = new ArrayList<>();


                url_maps.put(model.getTitle(), model.getImageAdvert());


                for(String name : url_maps.keySet()){
                    TextSliderView textSliderView = new TextSliderView(getApplicationContext());
                    // initialize a SliderLayout
                    textSliderView
                            .description(name)
                            .image(url_maps.get(name));
                    //add your extra information
                    textSliderView.bundle(new Bundle());
                    textSliderView.getBundle()
                            .putString("extra",name);
                    textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
                        @Override
                        public void onSliderClick(BaseSliderView slider) {

                            Toast.makeText(getApplicationContext(),
                                    "News Details ",Toast.LENGTH_LONG).show();
                        }
                    });

                    sliderShow.addSlider(textSliderView);
                }

                //   sliderShow.addSlider(textSliderView);
                sliderShow.setPresetTransformer(SliderLayout.Transformer.Accordion);
                sliderShow.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
                sliderShow.setCustomAnimation(new DescriptionAnimation());
                sliderShow.setDuration(10000);


            }
            catch (Exception e){

                e.printStackTrace();
            }


            }
        };


    }

请问我哪里错了。

我的更新代码。

 void Slider(){

    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            Map<String, Advert> td = new HashMap<String, Advert>();


            HashMap<String,String> url_maps = new HashMap<String, String>();        

            ArrayList<Advert> values = new ArrayList<>(td.values());

           // List<String> keys = new ArrayList<String>(td.keySet());

            for (Advert ad: values) {

              //  Toast.makeText(getApplicationContext(),""+ad.getImageAdvert(),Toast.LENGTH_LONG).show();
                url_maps.put(ad.getTitle(),ad.getImageAdvert());


            }

            for(String name : url_maps.keySet()){
                TextSliderView textSliderView = new TextSliderView(getApplicationContext());
                // initialize a SliderLayout
                textSliderView
                        .description(name)
                        .image(url_maps.get(name));
                //add your extra information
                textSliderView.bundle(new Bundle());
                textSliderView.getBundle()
                        .putString("extra",name);
                textSliderView.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
                    @Override
                    public void onSliderClick(BaseSliderView slider) {

                        Toast.makeText(getApplicationContext(),
                                "Advertise Here ",Toast.LENGTH_LONG).show();
                    }
                });

                sliderShow.addSlider(textSliderView);
            }

            //   sliderShow.addSlider(textSliderView);
            sliderShow.setPresetTransformer(SliderLayout.Transformer.Accordion);
            sliderShow.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
            sliderShow.setCustomAnimation(new DescriptionAnimation());
            sliderShow.setDuration(10000);


        }



        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    sliderShow = (SliderLayout) findViewById(R.id.slider);
}

我的广告课程。

public class Advert {

public String ImageAdvert;
public String  Title;


public Advert() {

    // left out for firebase ...

}


public String getImageAdvert() {
    return ImageAdvert;
}

public void setImageAdvert(String imageAdvert) {
    ImageAdvert = imageAdvert;
}

public String getTitle() {
    return Title;
}

public void setTitle(String title) {
    Title = title;
}
}

【问题讨论】:

    标签: java android firebase slider firebase-realtime-database


    【解决方案1】:

    FirebaseRecyclerAdapter 可以在 FirebaseRecycler 中设置数据!

    如果您想简单地从 DatabaseReference 中获取数据,您应该使用 Listeners。

    FirebaseDatabse - Retrieving Data

    要读取路径中的数据并侦听更改,请使用 addValueEventListener() 或 addListenerForSingleValueEvent() 方法将 ValueEventListener 添加到 DatabaseReference。

    (Child 还有第三个监听器 - ChildEventListener

    【讨论】:

    • @yotam ,是的,我理解你的概念,但我也试过了,看看我的帖子,我已经更新了,但它也显示为空
    • 上传广告和 MainActivity.EventViewHolder 代码。还要确保您引用了正确的位置并且规则没有问题。
    • 我使用了addValueEventListener(),但它也显示为空人
    • 我看了你的听众,你不使用DataSnapshot??? DataSnapshot 是值所在的位置
    • 所以我摆脱了 FirebaseRecyclerAdapter 因为我认为它无关紧要,@ 987654324@,正如你所说的那样,但我不知道我尝试获取列表的方式是否正确,请查看我的@ 987654325@尤其是这一行
    【解决方案2】:

    我建议您使用两个活动(第一个活动 = VoidActivity 和第二个活动 = MainActivty),让 VoidActivty 从 firebase 数据库获取数据,然后使用 SharedRefrence 或 intent.putString 将其发送到 MainActivity

    【讨论】:

      【解决方案3】:

      我建议你使用两个活动(第一个活动 = VoidActivity 和第二个活动 = MainActivty),VoidActivty 从 firebase 数据库中检索数据,然后使用 SharedPfrence 或使用 intent.putString() 将其发送到 MainActivity,它为我运行

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多