원래 의도는 코드만으로도 간단한 어플을 만들 수 있도록 리뷰하려고 했는데...
디자인을 바꾸고, 코드 부분도 조금씩 수정하다보니 코드를 통으로 올리는 것은 어렵고 비효율적이라는 생각이 드네요.
그래서, 부분 부분 중요한 코딩만 리뷰하려고 합니다.. ㅎㅎ (물론 이 포스팅을 보는 사람은 없지만 나중에 다시 공부하기 위해!ㅋㅋ)
얼마전에 RecyclerView까지 완료했었는데요.
저때는 정말 간단한 RecyclerView였고 지금은 여기서 xml부분을 수정해서 이렇게 바꼈습니다!
결과물부터 볼게요~
우선, 이전과 달라진 점은
이전에는 링크와 제목을 직접 데이터베이스에 업로드 하면 그걸 불러오는 방식이었는데,
지금은 링크만 업로드 하면 og:tag를 통해 이미지(image), 제목(title), 설명(description)을 알아서 찾아서 파이어베이스 데이터베이스에 저장 후 불러오는 방식으로 바꿨습니다.
OG Tag도 굉장히 유용한데요!! 이 부분은 다음에 다시 다루겠습니다!!
저는 분명 파이어베이스에서 이 기능을 간단하게 적용시켜줄 코드가 있을 줄 알았습니다.. 하지만 아무리 구글 검색을 해봐도 나오지 않네요 ㅠㅠ (제가 못찾는 걸수도 있습니다.)
아, 구글 검색 시 리사이클러 뷰 역순 정렬 방법이 있기는 합니다. 대신 그 방법은 데이터를 전부 불러왔을 경우에만 잘 작동합니다. ㅠ 저처럼 한번에 20개만 불러온 뒤, 스크롤을 맨 아래로 내렸을 때 다시 20개를 불러오게 만드려면 그 방법은 사용할 수 없어요. 이것도... 다음 포스팅에서 다뤄야겠네요ㅎㅎ
그래서 저만의 방식으로 코드를 짜봤습니다. 매우 간단합니다!! ㅎㅎ
1. onCreate 윗 부분에 DatabaseReference, ListArray를 선언해주세요.
DatabaseReference Dbref;
List<article.articledata> contents;
2. ArrayList를 선언해주고, Firebase Database를 불러옵니다.
//arraylist 정의
contents = new ArrayList<>();
//firebase database 불러오기
Dbref = FirebaseDatabase.getInstance().getReference().child("article");
여기서 "article"는 database에서 불러올 Child 명을 적어주면 돼요~
3. 이제 이벤트리스너를 만들어줍니다.
//firebase database 불러오기
Dbref = FirebaseDatabase.getInstance().getReference().child("article");
Dbref.limitToLast(20).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot item : dataSnapshot.getChildren()){
contents.add(0,item.getValue(Article.articledata.class));
}
oldestPostId = oldPost_get.get(0);
adapter = new RecyclerViewAdapter(contents);
list_recyclerview.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Dbref.limitToLast(20) : 데이터베이스의 최신 데이터부터 20개를 불러옴
만약에 데이터가 1부터 20까지 았다고 하면 {1,2,3,4,5,6, ... ,18, 19, 20} 이렇게 불러오게 됩니다.
4. 데이터를 역순으로 만들어 주기!
가장 중요한 부분이죠! 정말 쉽습니다. for문에서 contents에 추가할 때 앞쪽에 들어가도록 해 주면 됩니다.
contents.add(0, 값)
for(DataSnapshot item : dataSnapshot.getChildren()){
contents.add(0,item.getValue(Article.articledata.class));
}
이렇게 하면 {20,19,18, .... 3,2,1} 순으로 들어가게 되겠죠~! 완전 쉬운 방법이었습니다^^
'안드로이드 개발 > firebase database 사용 어플 만들기' 카테고리의 다른 글
안드로이드 링크 미리보기(Open graph) 사용법 (0) | 2019.01.12 |
---|---|
안드로이드 RecyclerView 무한스크롤, load more 방법 (3) | 2019.01.12 |
안드로이드 개발 Recyclerview 사용법 (0) | 2018.12.13 |
[안드로이드 앱 만들기] firebase의 database 어플 #7(toolbar) (0) | 2018.12.13 |
[안드로이드 앱 만들기] firebase의 database 어플 #6(firebase upload) (3) | 2018.12.10 |