Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 혼공단
- 정처기
- SQL
- 오블완
- join
- MySQL
- 기술면접
- 혼공챌린지
- 프로그래머스
- 안드로이드
- 알고리즘
- 정보처리기사
- groupby
- Android
- java
- 카카오코테
- select
- 혼공파
- Kotlin
- Til
- 코테
- 자료구조
- 인프런
- 티스토리챌린지
- 스터디
- CS
- 코틀린
- 안드로이드스튜디오
- 자바
- doitandroid
Archives
- Today
- Total
Welcome! Everything is fine.
[Android] Firebase Realtime Database 이용해 북마크 만들기 본문
728x90
목표 1
- 각 사용자의 uid값을 기준으로 북마크를 따로 저장한다.
- ‘저장’ 텍스트를 누르면 파이어베이스 Realtime Database에 저장된다.
과정
- 미리 해야할 것 : 각 사용자의 uid값을 가져오기 위해 회원가입/로그인 기능 만들기, 파이어베이스에 앱 등록하고 Authentication, Realtime Database 추가하기


리사이클러뷰마다 북마크를 만들 것이므로 RecipeAdapter.java에 데이터베이스에 북마크 저장하는 코드를 추가한다.
private FirebaseAuth mAuth;
...
mAuth = FirebaseAuth.getInstance();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("bookmark_ref");
String title = listData.get(i).getTitle();
String image = listData.get(i).getImageUrl();
holder.saveText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myRef
.child(mAuth.getCurrentUser().getUid())
.push()
.setValue(new RecipeData(title, image, url));
}
});
RecipeData.java에 파라미터 다른 생성자 추가
public RecipeData(String title, String imageUrl, String clickUrl) {
this.title = title;
this.imageUrl = imageUrl;
this.clickUrl = clickUrl;
}
결과

목표 2
- 북마크 탭에서 사용자가 북마크한 레시피 정보를 불러온다.
- 각 사용자의 uid값을 기준으로 북마크를 따로 불러온다.
- 강의에서는 Activity에 구현했지만 우리는 Activity에 들어가서 스피너에서 식당, 제품, 레시피 중 하나를 선택하여 나오는 프래그먼트에 구현한다.
과정
파이어베이스 Realtime DataBase에서 데이터를 불러오기 위해 addValueEventListener 를 사용하였다. 강의에서는 MutableList에 데이터를 넣었지만 여기선 어댑터에 추가했더니 성공적으로 출력할 수 있었다.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mAuth = FirebaseAuth.getInstance();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("bookmark_ref");
view = inflater.inflate(R.layout.fragment_farg_bookmark3, container, false);
recyclerView = view.findViewById(R.id.bookmark3_recyclerView);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new RecipeAdapter();
recyclerView.setAdapter(adapter);
myRef
.child(mAuth.getCurrentUser().getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for(DataSnapshot dataSnapshot : snapshot.getChildren()) {
Log.d("DataModel",dataSnapshot.toString());
adapter.addItem(dataSnapshot.getValue(RecipeData.class));
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.e("Bookmark", "dbError");
}
});
return view;
}
레시피 북마크 프래그먼트에 나온 레시피와 아래 로그창, 파이어베이스 데이터베이스에 저장된 레시피가 동일한 것을 볼 수 있다.


'Android' 카테고리의 다른 글
| [Android] 네이버 맵 반경 1km 내 마커찍기 (0) | 2023.06.22 |
|---|---|
| [Android] 검색해서 Firebase에 저장된 데이터 불러오기 (0) | 2023.06.22 |
| [Android/Kotlin] 데이터 바인딩 (0) | 2023.04.20 |
| [Android/study] Jsoup을 이용한 '만개의레시피' 페이지 파싱 (0) | 2023.04.20 |
| [Android/Kotiln] 스플래시(Splash) 화면 만들기 (0) | 2023.04.19 |
