728x90
반응형
순서맞추기. 다행히 개발할 때는 이정도로 어렵지 않다.
RecyclerView에 올라오는 데이터에 Date 정보가 있을 수 있다.
이런 경우 시간 순서에 맞춰서 데이터를 쌓고 싶다면?
물론 서버에서 줄때 예쁘게 주면 좋겠지만
그렇지 않을 수 있으니 클라이언트에서도 준비를 한다.
앞 포스팅을 기반으로 데이터를 순서대로 맞춰보겠다.
1. String으로 들어온 Date의 순서를 맞추기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @BindingAdapter("bind:item") public static void bindItem(RecyclerView recyclerView, ObservableArrayList<MyItem> items) { MyAdapter adapter = (MyAdapter) recyclerView.getAdapter(); // 정렬 : myDate 내림차순 if (items.size() > 1) { Collections.sort(items, (o1, o2) -> o2.myDate.compareTo(o1.myDate) ); } if (adapter != null) { adapter.setItem(items); } } | cs |
item.myDate는 String이다.
만약 int라면 위가 아닌 다른 방식을 사용한다. (검색해보면 나옴)
오름차순으로 변경하고 싶다면 o1.myDate.compareTo(o2.myDate)로 만들면 된다.
2. String을 내가 원하는 format으로 view에 출력하고 싶다.
ex : 201808061530
위처럼 연도, 월, 일, 시, 분 정보를 나열한 String 형태를 원하는 포맷으로 출력해보고자 한다.
포맷 바꾸는 김에 금액 정보에 콤마도 찍어보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | String price = String.format("%,d", item.couponPrice); String date = item.myDate; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm"); try { Date tempDate = dateFormat.parse(date); SimpleDateFormat newFormat = new SimpleDateFormat("yyyy/MM/dd-HH:mm"); SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy년 MM월 dd일"); item.myDate = newFormat.format(tempDate); item.myDay = dayFormat.format(tempDate); } catch (ParseException e) { e.printStackTrace(); } binding.setVariable(BR.my, item); | cs |
Date를 파싱하는 과정에서 try-catch문이 들어갈 필요가 있다.
변경된 값을 binding하여 변경된 data를 출력하는 것까지 확인할 수 있다.
728x90
반응형
'Android, iOS' 카테고리의 다른 글
Found data binding errors. import는 하셨습니까? (0) | 2018.08.10 |
---|---|
버튼에서 본 애니메이션 효과. 나도 해보고 싶다. (0) | 2018.08.08 |
Databinding을 사용하여 RecyclerView를 달아보자 (0) | 2018.08.02 |
Toolbar를 내 맘대로 만들고 싶드아아아ㅏㅏㅏ (0) | 2018.07.31 |
Custom Tab 만들기 (0) | 2018.07.27 |
Comment