Android 使用firebase的图像url制作幻灯片
我尝试从firebase恢复四张照片,并将它们显示在幻灯片中,使用Android 使用firebase的图像url制作幻灯片,android,firebase,url,arraylist,Android,Firebase,Url,Arraylist,我尝试从firebase恢复四张照片,并将它们显示在幻灯片中,使用getUrl()检索url 但是,setSliderViews()方法没有执行,我看到这个错误: 致命异常:主: 我如何解决这个问题 public class MainActivity extends AppCompatActivity { Upload data; ArrayList<String> url = new ArrayList<String>(); SliderLa
getUrl()
检索url
但是,setSliderViews()
方法没有执行,我看到这个错误:
致命异常:主:
我如何解决这个问题
public class MainActivity extends AppCompatActivity {
Upload data;
ArrayList<String> url = new ArrayList<String>();
SliderLayout sliderLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sliderLayout = findViewById(R.id.imageSlider);
sliderLayout.setIndicatorAnimation(SliderLayout.Animations.FILL); //set indicator animation by using SliderLayout.Animations. :WORM or THIN_WORM or COLOR or DROP or FILL or NONE or SCALE or SCALE_DOWN or SLIDE and SWAP!!
sliderLayout.setScrollTimeInSec(1); //set scroll delay in seconds :
getUrl();
setSliderViews();
}
private void getUrl(){
final ArrayList<String> mUrl = new ArrayList<String>();
FirebaseDatabase.getInstance().getReference("upload").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
data = snapshot.getValue(Upload.class);
if (data != null) {
mUrl.add(data.getImageUrl());
}
}
url = mUrl;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void setSliderViews() {
for (int i = 0; i <= 3; i++) {
SliderView sliderView = new SliderView(this);
switch (i) {
case 0:
sliderView.setImageUrl(url.get(0));
break;
case 1:
sliderView.setImageUrl(url.get(1));
break;
case 2:
sliderView.setImageUrl(url.get(2));
break;
case 3:
sliderView.setImageUrl(url.get(3));
break;
}
sliderView.setImageScaleType(ImageView.ScaleType.CENTER_CROP);
//sliderView.setDescription(" " + (i + 1));
final int finalI = i;
sliderView.setOnSliderClickListener(new SliderView.OnSliderClickListener() {
@Override
public void onSliderClick(SliderView sliderView) {
Toast.makeText(MainActivity.this, "This is slider " + (finalI + 1), Toast.LENGTH_SHORT).show();
}
});
//at last add this view in your layout :
sliderLayout.addSliderView(sliderView);
}
}
}
public类MainActivity扩展了AppCompatActivity{
上传数据;
ArrayList url=新的ArrayList();
滑块布局滑块布局;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sliderLayout=findViewById(R.id.imageSlider);
sliderLayout.setIndicatorAnimation(sliderLayout.Animations.FILL);//使用sliderLayout.Animations设置指示器动画:WORM或THIN\u WORM或COLOR或DROP或FILL或NONE或SCALE或SCALE\u DOWN或SLIDE和SWAP!!
sliderLayout.setScrollTimeInSec(1);//以秒为单位设置滚动延迟:
getUrl();
setSliderViews();
}
私有void getUrl(){
最终ArrayList mUrl=新ArrayList();
FirebaseDatabase.getInstance().getReference(“上载”).addListenerForSingleValueEvent(新值EventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
对于(DataSnapshot快照:DataSnapshot.getChildren()){
data=snapshot.getValue(Upload.class);
如果(数据!=null){
add(data.getImageUrl());
}
}
url=mUrl;
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
私有void setSliderViews(){
对于(int i=0;i而言,addListenerForSingleValueEvent
不会立即执行,因此在调用setSliderViews()
时,“url”数组列表为空。您需要等待侦听器执行
查看此线程:
如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。您为什么大喊大叫?我不明白您的问题?