【发布时间】:2018-06-10 17:42:42
【问题描述】:
我第一次尝试使用 Firebase,但遇到了一些问题。
只有当 getter 方法适合变量名称或成员变量是公共的时,才能从我的 Firebase 存储/数据库中获取数据。但是我对成员变量的命名约定是mVariableName,我将“m”从我的getter 方法名称中去掉。现在我有多个问题:
将模型成员变量公开是一个可行的选择还是不好的做法?
这里命名的最佳方法是什么?我应该将 getter 方法命名为 getmName 还是应该将“m”从成员变量名称中删除?然后我应该为整个项目还是只为这个类更改它?
我只想知道这里有哪些最佳做法。
这是读取条目的类:
public class ImagesActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private ImageAdapter mAdapter;
private FirebaseStorage mFirebaseStorage;
private DatabaseReference mDatabase;
private List<Upload> mUploads;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_images);
mRecyclerView = findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mUploads = new ArrayList<>();
mFirebaseStorage = FirebaseStorage.getInstance();
mDatabase = FirebaseDatabase.getInstance().getReference(Constants.DATABASE_PATH_UPLOADS);
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Upload upload = postSnapshot.getValue(Upload.class);
Log.i("UPLOAD", "Upload : " + upload.getName());
mUploads.add(upload);
}
mAdapter = new ImageAdapter(getApplicationContext(), mUploads);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
这些是规则:
数据库:
{
"rules": {
".read": true,
".write": true
}
}
存储:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
Upload.class(仅当任一字段为公共字段或 getter 方法名称符合 m 约定时才有效,这很难看):
public class Upload {
public String mName;
public String mImageUrl;
public Upload() {
}
public Upload(String name, String imageUrl) {
if (name.trim().equals("")) {
name = "No Name";
}
mName = name;
mImageUrl = imageUrl;
}
public String getName() {
return mName;
}
public String getImageUrl() {
return mImageUrl;
}
}
【问题讨论】:
标签: android firebase firebase-realtime-database