私は初めてFirebaseに手をかけていますが、問題が発生しました。 私のFirebaseストレージ/データベースからデータを取得するのは、getterメソッドが変数名に合っているか、メンバー変数がpublicである場合のみです。しかし、メンバ変数の命名規則はmVariableName
で、getterメソッドの名前から "m"を除いています。今私は複数の質問があります:Firebaseゲッターのメソッドと命名規則
モデルメンバー変数を公開可能なオプションにしていますか、それとも悪い習慣ですか? 名前を付けるのに最適なアプローチは何ですか? 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 (どちらかのフィールドは醜いですフィット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;
}
}
私はそれを試みますが、この方法ではFirebaseからデータを読み取ることができません。 getterメソッドの名前が変数名に合っているか、変数がpublicである場合にのみ機能します:/ –
これはうまくいきます。空のコンストラクタが公開されていますか?ユーザの場合、 'public User(){}'になります。 – SUPERCILEX
さて、私は空の公共のコンストラクタを持っています –