0

我正在使用firebase作为我的后端的Android项目。我以url的形式将数据保存在数据库中,并且正在尝试使用Picasso library在应用中获取图像。但我无法检索图像表单数据库。以下是我的代码。如何检索图像url形式firebase数据库andriod

片段类,我使用来获取数据:

public class McaFirstSemSylabus extends Fragment { 

    public ImageView mcafirstsemsylbausimag; 

    Syllabus sl; 
    DatabaseReference loadmcafirstsylabus; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootView = inflater.inflate(R.layout.activity_mca_first_sem_sylabus, container, false); 
     loadmcafirstsylabus = FirebaseDatabase.getInstance().getReference().child("Syllabus").child("McaSyllabus").child("Firstsem"); 

     mcafirstsemsylbausimag = (ImageView) rootView.findViewById(R.id.mcasylabus_img); 

     String img = sl.getImg(); 

     Picasso.with(getActivity().getApplicationContext()).load(img).into(mcafirstsemsylbausimag); 
     return rootView; 
    } 
} 

下面是POJO类由getter和setter:

public class Syllabus { 

    private String img; 

    public String getImg() { 
     return img; 
    } 

    public void setImg(String img) { 
     this.img = img; 
    } 

    public Syllabus(){ 
    } 

    public Syllabus(String image) { 
     this.img = image; 
    } 
} 
+0

这里有什么问题? 'sl.getImg();'的NullPointerException异常? –

+0

是的,这是我的错误“空指针异常” –

+0

你明白这是什么意思?如何解决它?请用logcat编辑。 –

回答

1

那是因为你的课程对象为空! 您必须将ValueEventListener赋予您已存储在该特定子项中的对象

loadmcafirstsylabus.addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
       //this retrives the java object you saved in that particular child 
       sl = dataSnapshot.getValue(Syllabus.class); 
       String img = sl.getImg(); 

       //rest of your code 
       } 
+0

我试过上面的代码修改仍然收到空指针异常错误。 –

+1

sory以上评论。我清理了我的项目并再次运行代码正常工作,非常感谢你。 –

+0

很酷!请注意,我使用了addListenerForSingleValueEvent,以便上面的代码只运行一次,具体取决于您可能想要使用addValueEventListener的所需,所以要小心 –