거창하게 Time to String 이라고 했지만... 그냥 방금, 몇분전, 몇시간전 나타내주는 거 구현하는 방법이다.
# 시간(long)을 String으로 만들어 줄 클래스 만들기.
package com.onedelay.mymovie.utils;
public class TimeString {
public static final int SEC = 60;
public static final int MIN = 60;
public static final int HOUR = 24;
public static final int DAY = 30;
public static final int MONTH = 12;
public static String formatTimeString(long regTime) {
long curTime = System.currentTimeMillis();
long diffTime = (curTime - regTime) / 1000;
String msg = null;
if (diffTime < TimeString.SEC) {
msg = "방금";
} else if ((diffTime /= TimeString.SEC) < TimeString.MIN) {
msg = diffTime + "분전";
} else if ((diffTime /= TimeString.MIN) < TimeString.HOUR) {
msg = (diffTime) + "시간전";
} else if ((diffTime /= TimeString.HOUR) < TimeString.DAY) {
msg = (diffTime) + "일전";
} else if ((diffTime /= TimeString.DAY) < TimeString.MONTH) {
msg = (diffTime) + "달전";
} else {
msg = (diffTime) + "년전";
}
return msg;
}
}
-> 사용법은 TimeString.formatTimeString(long time) 으로 String을 리턴받으면 된다.
* 참고 : System.currentTimeMillis() 메소드를 사용하면 현재 시간을 long 으로 가져온다. (계산 기준은 특정 날짜부터 현재 시각까지 long 값으로 리턴하는 것 같다)
# 시간순으로 정렬하기 (ArrayList.sort(Comparator) 이용)
ArrayList<long> 으로 하면 되지만, 필자는 ReviewItem 속의 time 속성(마찬가지로 long)을 기준으로 정렬했다.
먼저 Comparator 클래스를 만들어주어야한다.
import java.util.Comparator;
public class TimeDescending implements Comparator<ReviewItem> {
@Override
public int compare(ReviewItem item, ReviewItem t1) {
return t1.getTime() <= item.getTime() ? -1 : 1;
}
}
compare 메소드를 override 해야하는데, 필자는 내림차순으로 구현했다.
오름차순으로 해야한다면 retrun 값 -1, 1을 바꿔주면 될 것이다.. (아마도)
https://msdn.microsoft.com/ko-kr/library/y2ky8xsk(v=vs.110).aspx
compare 메소드는 위 사이트를 보고 대충 이해했다.
사용법은 아래와 같다.
reviewList.add(new ReviewItem(R.drawable.user1, "abc12**", System.currentTimeMillis()-2000000, 5, "웃긴 내용보다는 좀 더 진지한 영화.", "추천 1"));
reviewList.add(new ReviewItem(R.drawable.user1, "bu_t**", System.currentTimeMillis()-3000000, 3, "연기가 부족한 느낌이 드는 배우도 있지만 전체적으로 재밌다.", "추천 0"));
reviewList.add(new ReviewItem(R.drawable.user1, "em_r2**", System.currentTimeMillis()-4000000, 4, "말이 필요없어요.", "추천 0"));
reviewList.sort(new TimeDescending());
다른 사람이 이해하기에는 너무 대충 쓴 글이지만, 나를 위해 정리하는 글이므로 나만 이해할 수 있으면 될것 같아서 이정도만 쓰겠다.
Full source는 현재 부스트코스 프로젝트를 진행하고있어 올릴 수 없다.
# 참고한 블로그
'Android > Basic' 카테고리의 다른 글
[Android] ViewPager + TitleStrip(타이틀스트립) (0) | 2018.07.01 |
---|---|
[Android] ViewPager + Tab (0) | 2018.06.25 |
[Android] Action Bar (0) | 2018.05.27 |
[Android] startActivityForResult() 활용 예제 (0) | 2018.05.18 |
[Android] Permission (0) | 2018.05.17 |