如何在Firebase Storage中保存自定义的jave对象?

时间:2019-02-27 22:38:49

标签: android firebase firebase-storage

我的自定义对象由一个图像和3个字符串组成(我有getter,setter和构造函数(包括空)。

我正在研究Google Play克隆,因此该对象基本上是应用程序的卡片视图(-description)。我有一个嵌套的回收站视图(就像Google Play一样)。

我希望能够将这些对象与Firebase Storage一起存储,并在特定片段内添加新对象,然后将其全部加载到家庭片段中。 我不确定如何处理类别,将应用程序存储在文件夹名称为类别的文件夹中,还是不确定要保存类别的字段。

无论如何,现在,我只希望能够使用Firebase Storage保存自定义对象。找到了与实时数据库一起使用但与存储一起工作的指南。

这是到目前为止我的上传片段的样子:

public class AddAppFragment extends Fragment {

    private StorageReference mStorageRef;

    public static final int PICK_IMAGE = 1;
    private Uri imageUri;

    private EditText et_appName;
    private EditText et_appDescription;
    private TextView tv_addPhoto;
    private ImageView appImg;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_add_app, container, false);

        et_appDescription = v.findViewById(R.id.addApp_editText_appDescription);
        et_appName = v.findViewById(R.id.addApp_editText_appName);
        appImg = v.findViewById(R.id.addApp_imageView_appImg);
        tv_addPhoto = v.findViewById(R.id.addApp_textView_addPhotoText);

        tv_addPhoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE);
            }
        });

        mStorageRef = FirebaseStorage.getInstance().getReference();
        String category = "favorites";
        FirebaseAuth auth = FirebaseAuth.getInstance();
        FirebaseUser user = auth.getCurrentUser();

        AppModel appModel = new AppModel(R.drawable.img1, et_appName.getText().toString().trim(), "5stars", et_appDescription.getText().toString());
        //StorageReference appRef = mStorageRef.child("apps").child(category). ????
        //                                                                     setValue not working (that is for RealTimeDB I think


        return v;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null){
            imageUri = data.getData();
            appImg.setImageURI(imageUri);
            appImg.bringToFront();
        }

    }
}

0 个答案:

没有答案