如何通过传递URL在幻灯片中显示多个图像?

时间:2017-11-11 13:02:47

标签: android firebase firebase-realtime-database slideshow firebase-storage

我的firebase数据库结构是

USERS / user_name / image / 1:" url_1",2:" url_2",3:" url_3",对用户最多限制为8可以上传图片。

我成功存储了图片和网址。但现在我想以幻灯片放映的形式加载回来。

如何实现更多步骤,还有一个问题是用户是否长按了应该从firebase存储和数据库中删除的特定图像。

请帮忙......

1 个答案:

答案 0 :(得分:0)

要显示这些网址,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference urlsRef = rootRef.child("USERS").child("user_name").child("image");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String url = ds.getValue(String.class);
            Log.d("TAG", url);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
urlsRef.addListenerForSingleValueEvent(eventListener);

您的输出将是:

url_1
url_2
url_3
//and so on

所以有了url,你需要创建一个ListView和一个Adapter。那就是它。

作为对第二个问题的回答,请在相应的View.OnLongClickListener上使用ImageView并删除该特定图片,请使用以下代码:

StorageReference storageRef = storage.getReference();

// Create a reference to the file to delete
StorageReference imageRef = storageRef.child("images/imageName.jpg");

// Delete the file
desertRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
    @Override
    public void onSuccess(Void aVoid) {
    // File deleted successfully
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
    // Uh-oh, an error occurred!
    }
});

另外,请不要忘记从Firebase数据库中删除图片的网址,如下所示:

rootRef.child("USERS").child("user_name").child("image").child("1").removeValue();

这行代码将删除您的第一个网址。