关于expanded一级二级菜单数据的分组排序
生活随笔
收集整理的這篇文章主要介紹了
关于expanded一级二级菜单数据的分组排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最新再弄關于expandedlistview相關的東西,所以需求是需要對一級菜單根據時間排序,同時二級菜單也需要根據時間排序,距離現在最近的時間顯示在最前面。
效果就是如下:
--group2 ?---2013-08-08 10:30
--msg1 --2013-08-08 10:30
--msg3 --2013-08-08 10:10
--group5 ?---2013-08-08 9:30
--msgtitle --2013-08-08 9:30
--msgtitle --2013-08-08 9:10
下面代碼是對MyData數據的一個排序
public List<List<MyData>> sortList(){ List<MyData> mList = new ArrayList<MyData>();String[] titleKind = new String[]{"張三","李四","王五","張三","趙六","王五","李四","張三","李四","王五","張三"};for(int i=0;i<titleKind.length;i++){MyData data = new MyData();data.setTitle(titleKind[i]);data.setMessage(""+i);data.setDate(new Date());mList.add(data);try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch block e.printStackTrace();}}//groupList<String> titleString = new ArrayList<String>();for(int i=0;i<mList.size();i++){if(!titleString.contains(mList.get(i).getTitle())){titleString.add(mList.get(i).getTitle());}}//根據group的類別分類數據List<List<MyData>> allList = new ArrayList<List<MyData>>();for(int j=0;j<titleString.size();j++){List<MyData> childList = new ArrayList<MyData>();for(int k=0;k<mList.size();k++){if(mList.get(k).getTitle().equals(titleString.get(j))){childList.add(mList.get(k));}}//對child先按時間排序,再添加到group里面Collections.sort(childList, new Comparator<MyData>() { /** * * @param lhs * @param rhs * @return an integer < 0 if lhs is less than rhs, 0 if they are * equal, and > 0 if lhs is greater than rhs,比較數據大小時,這里比的是時間 */ @Override public int compare(MyData lhs, MyData rhs) { Date date1 = lhs.getDate(); Date date2 = rhs.getDate(); // 對日期字段進行升序,如果欲降序可采用after方法 if (date1.before(date2)) { return 1; } return -1; } }); allList.add(childList);}//group排序后的list List<MyData> temp = new ArrayList<MyData>();for(int i=0;i<allList.size();i++) { for (int j=allList.size()-1 ;j>i;j--) { if (allList.get(i).get(0).getDate().before(allList.get(j).get(0).getDate())){ temp = allList.get(i); allList.set(i,allList.get(j)); allList.set(j,temp); } }}for(int i=0;i<allList.size();i++){for(int j=0;j<allList.get(i).size();j++){System.out.println(allList.get(i).get(j).getTitle()+allList.get(i).get(j).getDate().toGMTString());}}return allList;}
下面是MyData的數據結構
class MyData{private String title;private String message;private Date date;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}}計算時間距離現在的一個方法如下
class TimeUtil { //時間的一個轉換方法public static Date stringToDate(String dateString) { ParsePosition position = new ParsePosition(0); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date dateValue = simpleDateFormat.parse(dateString, position); return dateValue; }public static List<MyData> timeHowLong(List<MyData> list){Collections.sort(list, new Comparator<MyData>() { /** * * @param lhs * @param rhs * @return an integer < 0 if lhs is less than rhs, 0 if they are * equal, and > 0 if lhs is greater than rhs,比較數據大小時,這里比的是時間 */ @Override public int compare(MyData lhs, MyData rhs) { Date date1 = lhs.getDate(); Date date2 = rhs.getDate(); // 對日期字段進行升序,如果欲降序可采用after方法 if (date1.before(date2)) { return 1; } return -1; } });Date now = new Date(System.currentTimeMillis());for(int i=0;i<list.size();i++){long time = now.getTime() - list.get(i).getDate().getTime();int day=(int)(time/(24*60*60*1000));int hour=(int)(time/(60*60*1000)-day*24);int min=(int)((time/(60*1000))-day*24*60-hour*60);Log.v("InfoCenter", "day:"+day+"hour:"+hour+"min:"+min);String formatDay= null;if((0<day)&&(day<30)){formatDay = day+"天"+"以前";}else if((31<day)&&(day<365)){formatDay = (day/30)+"月"+"以前";}else if(day>=365){formatDay = (day/365)+"年"+"以前";}else{if(0<hour){formatDay = hour+"小時"+"以前";}else{formatDay = min+"分"+"以前";}}list.get(i).setDate(formatDay); } return list;} }?
轉載于:https://www.cnblogs.com/9420sunshine/p/3242894.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的关于expanded一级二级菜单数据的分组排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打开.264后缀名格式的文件
- 下一篇: php判断http头还是https头