我的自定义对象由一个图像和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();
}
}
}