처음으로 Firebase를 사용하려고하는데 문제가 발생했습니다. getter 메소드가 변수 이름에 적합하거나 멤버 변수가 public 인 경우에만 Firebase 스토리지/데이터베이스에서 데이터를 가져올 수 있습니다. 그러나 멤버 변수에 대한 내 명명 규칙은 mVariableName
이며 getter 메서드 이름에서 "m"을 그대로 둡니다. 이제 여러 질문이 있습니다.Firebase 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 (중 필드가 공용 또는 게터 메소드 이름은 못생긴 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
그래, 나는 공공 생성자가 비어있다. –