当前位置: 首页 > 知识库问答 >
问题:

图像滑块不从firebase实时数据库提取

孟鸿德
2023-03-14

我正在使用viewpager使用滑块,此滑块显示一些图像。我将此图像存储在我的Firebase数据库中,但此应用程序被粉碎并在addValueEventListener方法中显示错误。

主要活动。Java语言

   sliderpager = findViewById(R.id.slider);
   lstSlides = new ArrayList<SliderModel>();

   SliderPageAdapter sliderPageAdapter = new SliderPageAdapter(MainActivity.this,lstSlides);
   sliderPageAdapter.notifyDataSetChanged();
   sliderpager.setAdapter(sliderPageAdapter);

   database = FirebaseDatabase.getInstance();
   reference = database.getReference("Image");

   reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot img : dataSnapshot.getChildren()){
                SliderModel sm = img.getValue(SliderModel.class);
                lstSlides.add(sm);
             }
         }

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

            }
        });

SliderPageAdapter.java

    private Context ctx;
    List<SliderModel> SliderModels;

    public SliderPageAdapter(Context ctx, List<SliderModel> SliderModels) {
        this.ctx = ctx;
        this.SliderModels = SliderModels;
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View slideLayout = inflater.inflate(R.layout.slider_row,null);

        ImageView slideImg = slideLayout.findViewById(R.id.sliderimg);
        Picasso.get().load(SliderModels.get(position).getImage()).into(slideImg);
        container.addView(slideLayout);
        return slideLayout;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        super.destroyItem(container, position, object);
        container.removeView((View)object);
    }

SliderModel.java

    private String image;

    public SliderModel() {

    }

    public SliderModel(String image) {
        this.image = image;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

如何解决此错误?

共有1个答案

勾喜
2023-03-14

您需要删除for循环,因为当您进行迭代时,检索到的数据类型是String。因此,请执行以下操作:

    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                SliderModel sm = dataSnapshot.getValue(SliderModel.class);
                lstSlides.add(sm);
            }

        }
 类似资料:
  • 所以,我想让用户同时上传多个图像到firebase存储。我已经成功地完成了这部分,但现在我想要取回图像。一开始,我上传一个图像给每个用户,并将图像id保存到实时数据库中,这样就很容易通过图像id检索回图像。但是现在我如何为每个用户保存多个图像到实时数据库我不能使用相同的子名,因为它将被替换为旧的。有什么想法吗?? 上载图像并在实时数据库上设置id: 我的firebase数据库:

  • 我是Android的新手,我正在做一个应用程序,可以显示用户上传的衣服图片。我可以完美地上传图片,但由于某种原因,我无法将firebase实时数据库中的图像显示到中。几周来我一直在寻找解决办法。 请帮帮我。非常感谢你抽出时间。 topactivity.java 下面是我在TopsActivity.java中所做的更改

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(

  • 一切正常,但DatabaseReference无法获取数据,这就像是忽略了我的代码运行,就像我的internet无法运行一样,请帮助我,我是这个社区的新手,下面是我的代码和图片。 以前它是工作的,但由于我只是更改了一些代码,使只有currentVersion>=vCode,这样即使数据库中的值是 firebase数据库映像 mainactivity.java manifest.xml 依赖关系

  • 我正在尝试上传图像到firebase,以及其他字符串和双数据类型。 我现在正在考虑两个选项,一个是上载imageUrl到firebase实时数据库,当我检索它时,我将检索一个imageUrl并将其转换为图像。 谢谢你的帮助!我很感激。

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire