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的所需,所以要小心 –