Android I';我正试图用寻呼机和毕加索将firebase中的图像显示到一个狂欢的视图中,但图像没有进入视图
来自firebase的图像无法进入视图 我已经尽了我所能,最后,我不得不问这个问题 这是我的适配器类Android I';我正试图用寻呼机和毕加索将firebase中的图像显示到一个狂欢的视图中,但图像没有进入视图,android,firebase,android-viewpager,Android,Firebase,Android Viewpager,来自firebase的图像无法进入视图 我已经尽了我所能,最后,我不得不问这个问题 这是我的适配器类 public class ViewPagerAdapter extends PagerAdapter { Context context; public String[] imageUrls ; public ViewPagerAdapter(Context context,String[] imageUrls){ this.context=context; this.imageUrls=
public class ViewPagerAdapter extends PagerAdapter {
Context context;
public String[] imageUrls ;
public ViewPagerAdapter(Context context,String[] imageUrls){
this.context=context;
this.imageUrls=imageUrls;
}
@Override
public int getCount() {
return imageUrls.length;
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view==o;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
Picasso.get()
.load(imageUrls[position])
.fit()
.centerCrop()
.into(imageView);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
这是我从firebase获取数据的另一个类
private void loadImages(String insideHostelID) {
ImageDatabaseReference.child(insideHostelID).child("INSIDE_PICTURES").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Inside_location inside_location=dataSnapshot.getValue(Inside_location.class) ;
// Toast.makeText(hostelDetails.this,""+ inside_location.getPIC9(),Toast.LENGTH_SHORT).show();
imageUrls = new String[]{
inside_location.getPIC1(), inside_location.getPIC2(),
inside_location.getPIC3(), inside_location.getPIC4(),
inside_location.getPIC5(), inside_location.getPIC6(),
inside_location.getPIC7(), inside_location.getPIC8(),
inside_location.getPIC9(), inside_location.getPIC10(),
};
viewPagerAdapter = new ViewPagerAdapter(getBaseContext(),imageUrls);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
insideHostelImage.setAdapter(viewPagerAdapter);
}
不知道问题出在哪里在收到firebase的任何响应之前,您正在设置适配器。 只是修改了如下代码
private void loadImages(String insideHostelID) {
ImageDatabaseReference.child(insideHostelID).child("INSIDE_PICTURES").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Inside_location inside_location=dataSnapshot.getValue(Inside_location.class) ;
// Toast.makeText(hostelDetails.this,""+ inside_location.getPIC9(),Toast.LENGTH_SHORT).show();
imageUrls = new String[]{
inside_location.getPIC1(), inside_location.getPIC2(),
inside_location.getPIC3(), inside_location.getPIC4(),
inside_location.getPIC5(), inside_location.getPIC6(),
inside_location.getPIC7(), inside_location.getPIC8(),
inside_location.getPIC9(), inside_location.getPIC10(),
};
viewPagerAdapter = new ViewPagerAdapter(getBaseContext(),imageUrls);
insideHostelImage.setAdapter(viewPagerAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
并在适配器类中添加/替换下面的方法
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
仍然没有图像请确保您的查询响应正确返回数据,并在“onCancelled”查询方法中添加一些toast。这样,当数据库删除您的请求时,您将通知。如果您从firebase获得任何响应数据,请检查所有内容。然后尝试将适配器中的addView方法更改为
container.addView(imageView,newviewgroup.LayoutParams(MATCH_CONTENT,MATCH_CONTENT))这个问题帮助我解决了我的问题