Android中對ListView、RecycleView裡面的資料進行排序方法總結
最近的開發過程中遇到了,按照bean類中的多個欄位進行排序的情況,藉此機會把相關的排序做法,簡單整理備份一下。
1.list的單純排序
2.list元素為bean的情況,按照bean的某一個屬性進行排序
3.list元素為bean的情況,按照bean的多個屬性進行排序
import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import cn.com.ydd.bean.SortBean;import cn.com.ydd.util.CommonUtil; public class SortTest { public static void main(String[] args) { //1、單純的一個list資料排序 ArrayList lst = new ArrayList(); lst.add("00000000001"); lst.add("00000000002"); lst.add("00000000003"); lst.add("00000000004"); lst.add("00000000005"); //升序排序Collections.sort(lst); System.out.println(lst.toString()); //降序排序 Collections.reverse(lst); System.out.println(lst.toString()); //2、list元素為Bean的情況下,根據Bean裡面一個元素排序 List<SortBean> list = new ArrayList<SortBean>(); SortBean sb; sb= new SortBean(); sb.setId("00001"); sb.setName("田中"); sb.setSex("F"); list.add(sb); sb = new SortBean(); sb.setId("00002"); sb.setName("佐藤"); sb.setSex("M"); list.add(sb); sb = new SortBean(); sb.setId("00003"); sb.setName("佐藤"); sb.setSex("M"); list.add(sb); sb = new SortBean(); sb.setId("00004"); sb.setName("佐藤"); sb.setSex("M"); list.add(sb); sb = new SortBean(); sb.setId("00005"); sb.setName("山本"); sb.setSex("F"); list.add(sb); sb = new SortBean(); sb.setId("00006"); sb.setName("山本"); sb.setSex("F"); list.add(sb); //降順 System.out.println("***********name:降順*************"); CommonUtil.sort(list, "name", false); for(SortBean item : list){ System.out.print(item.getId()+" "); System.out.print(item.getName()+" "); System.out.println(item.getSex()); } //升序 System.out.println("***********name:昇順*************"); CommonUtil.sort(list, "name", true); for(SortBean item : list){ System.out.print(item.getId()+" "); System.out.print(item.getName()+" "); System.out.println(item.getSex()); } System.out.println("***********name:昇順 ID:降順*************"); //3、list元素為Bean的情況下,根據Bean裡面多個元素排序 Map<String, String> sortParam = new LinkedHashMap<String, String>(); //name:升序 ID:降序 sortParam.put("name", "asc"); sortParam.put("id", "desc"); CommonUtil.sortExecute(list, sortParam); for(SortBean item : list){ System.out.print(item.getId()+" "); System.out.print(item.getName()+" "); System.out.println(item.getSex()); } sortParam.clear(); //name:降序 ID:升序 sortParam.put("name", "desc"); sortParam.put("id", "asc"); CommonUtil.sortExecute(list, sortParam); System.out.println("***********name:降順 ID:昇順*************"); for(SortBean item : list){ System.out.print(item.getId()+" "); System.out.print(item.getName()+" "); System.out.println(item.getSex()); } } }
共通方法類
import java.util.Comparator; import java.util.List; import java.util.Map; import org.apache.commons.beanutils.BeanComparator; import org.apache.commons.collections4.ComparatorUtils; import org.apache.commons.collections4.comparators.ComparableComparator; import org.apache.commons.collections4.comparators.ComparatorChain; import org.apache.commons.collections4.comparators.NullComparator; public class CommonUtil { /** * 根據Bean下面的一個元素排序 * @param list * @param filedName * @param ascFlag */ @SuppressWarnings("unchecked") public static void sort(List list, String filedName, boolean ascFlag) { if (list.size() == 0 || filedName.equals("")) { return; } Comparator<?> cmp = ComparableComparator.INSTANCE; // 降序 if (ascFlag) { cmp = ComparatorUtils.nullLowComparator(cmp); } else {
cmp = ComparatorUtils.reversedComparator(cmp); } Collections.sort(list, new BeanComparator(filedName, cmp)); } /** * 根據Bean下面的多個元素排序 * @param beans * @param sortParam */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static void sortExecute(List<?> beans, Map<String, String> sortParam) { if (beans.size() == 0 || sortParam.keySet().size() == 0) { return; } if (beans.isEmpty() || sortParam.isEmpty()) { return; } ComparatorChain comparator = new ComparatorChain(); boolean sortMethod = false; for (String itemName : sortParam.keySet()) { sortMethod = false; if ("desc".equals(sortParam.get(itemName))) { sortMethod = true; } comparator.addComparator(new BeanComparator(itemName, new NullComparator()), sortMethod); } Collections.sort(beans, comparator); } }
輸出結果
[00000000001, 00000000002, 00000000003, 00000000004, 00000000005] [00000000005, 00000000004, 00000000003, 00000000002, 00000000001] ***********name:降順************* 00001 田中 F 00005 山本 F 00006 山本 F 00002 佐藤 M 00003 佐藤 M 00004 佐藤 M ***********name:昇順************* 00002 佐藤 M 00003 佐藤 M 00004 佐藤 M 00005 山本 F 00006 山本 F 00001 田中 F ***********name:昇順 ID:降順************* 00004 佐藤 M 00003 佐藤 M 00002 佐藤 M 00006 山本 F 00005 山本 F 00001 田中 F ***********name:降順 ID:昇順************* 00001 田中 F 00005 山本 F 00006 山本 F 00002 佐藤 M 00003 佐藤 M 00004 佐藤 M
相關推薦
Android中對ListView、RecycleView裡面的資料進行排序方法總結
最近的開發過程中遇到了,按照bean類中的多個欄位進行排序的情況,藉此機會把相關的排序做法,簡單整理備份一下。 1.list的單純排序 2.list元素為bean的情況,按照bean的某一個屬性進行排序 3.list元素為bean的情況,按照bean的多個屬性進行排序 import java.util.A
Excel中根據某個表的順序對另外一個表的資料進行排序
問題來源: 今天我們公司銷售部的庫管找我幫忙解決一個問題:3月份的庫存有2個表,A表是3.1的,B表是3.31,現在想要找出2個表的差異,但是400多個貨品在2個表中排序都不一樣;能不能將B表的貨品按照A表的順序排列呢? 首先我想到的是要用到Excel的哪些功能: 排序
低解析度、非對齊、視訊監控資料中的人臉識別(LFW, YTF)+CVPR2013
現有的人臉識別資料庫,像Yale,YaleB,ORL等人臉資料庫,解析度高,良好對齊等datasets。。。 最近這方面的paper越來越少,逐漸向低解析度、大資料庫等監控中的images,更具挑戰性的資料集轉移~ 最近看到一篇中科院的一篇CVPR2013中的pap
android中對sim卡聯絡人的增刪改查以及監聽sim卡聯絡資料的改變
sim卡聯絡人的增刪改查主要是通過ContentProvider來進行操作的,在android中對sim卡聯絡人操作的provider是定義在IccProvider.java這個類中的,這個類位於android原始碼的位置frameworks/base/telephony/
關於Android中圖片大小、記憶體佔用與drawable資料夾關係的研究與分析
研究內容研究方法測試環境研究過程結果分析結論 研究內容 本篇內容主要探討以下場景:同一張圖片,放置在不同的drawable資料夾,在同一裝置上執行,對圖片大小及記憶體佔用有什麼影響。 研究方法 控制變數法分析法 測試環境 採用錘子T1手機(1080*
Android中對Handle機制的理解
trac 意義 還要 break create findview curl net protected 一、重要參考資料 【參考資料】 眼下來看,以下的幾個網址中的內容質量比較不錯。基本不須要再讀別的網址了。 1、android消息機制一
Android中的ListView的應用
and xbm pyo evc isf f11 info won ogg 玖w7拍hx仲每62菲獻0http://shufang.docin.com/nprrm06928 O2屏zz稈Q扇棧綠2oeuhttp://tushu.docin.com/vsxx68589
android中的MD5、Base64、DES/3DES/ADES加解密
tid log str dpa enc csdn 長度 ttext public MD5摘要算法: <span style="font-size:18px;
Android中對集合中的物件進行排序
最近需要一個對圖片物件進行排序的功能。 思路: 1、新建一個類實現Comparator<?>,這個類是實現比較的關鍵類,一般做比較的型別為int或String。 public class OrderSortUtil implements Comparator<
Android中設定ListView的item高度無效--解決方案
原文地址:https://blog.csdn.net/zhonglinliu/article/details/54580622 問題: ListView的使用中,item是在adapter中用來顯示每一個小條目的資
Android中的Handler、Looper和MessageQueue的使用以及原理
提到Handler大家一定都不陌生,通常我們都是在子執行緒通過在主執行緒中建立的Handler物件切換到主執行緒中去更新View的顯示內容,然而很少接觸Looper更沒有感覺到MessageQueue的存在,然而三者是密切相關的,那麼接下來分別介
Android中對OkHttp的封裝使用
一、OkHttp導包: compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.okio:okio:1.9.0' compile 'com.google.c
android中對某一個頁面設定常亮
android中如何保持頁面的方式四種 1.WakeLock 2.FLAG_KEEP_SCREEN_ON 3.keepScreenOn 4.MediaPlayer的 setScreenOnWhilePlaying(),這個用於視訊,MediaPlayer提供的方法
Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
Android中觸控事件傳遞過程中最重要的是dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()方法。這個是困擾初學者的問題之一,我開始也是。這裡記錄一下dispatchTouchEvent()、onInter
angular/ionic中對img、iframe等的src進行動態繫結變數的問題解決
例如以下程式碼: 對應的html頁面中是這樣:<iframe class=“filling” [src] = “iframe”> 在這裡直接對src進行動態繫結變數就會出現:unsafe value used in a resource URL co
對ListBox控制元件中的資料進行排序
實現效果: 知識運用: ListBox控制元件的Sorted屬性 //ListBox控制元件中的資料項是否按字母順序排序 public bool Sorted{get;set;} 實現程式碼: private void button1_Click(object
Android中設定ListView的選中的Item的背景顏色
ListView中沒有預設的選擇顏色,只有選擇Item後的焦點顏色,滑鼠點選時Item有顏色,放開滑鼠後顏色也就沒有了,要實現放開滑鼠後選擇項的背景還是有顏色的 1、配置main.xml Java程式碼 <?xml version="1.0" encoding="utf-8"?&g
Spark中元件Mllib的學習11之使用ALS對movieLens中一百萬條(1M)資料集進行訓練,並對輸入的新使用者資料進行電影推薦
1解釋 spark-1.5.2 資料集:http://grouplens.org/datasets/movielens/ 一百萬條(1M) 資料劃分: 將樣本評分表以key值切分成3個部分,分別用於訓練 (60%,並加入使用者評分), 校驗 (20
android中強引用、軟引用、弱引用。
強引用:直接引用一個物件軟引用:當記憶體不足&沒有其他地方引用時被gc回收。弱引用:無論記憶體是否充足,沒有其他地方引用時只要呼叫gc則被回收。ArrayList<String> list=new ArrayList<String>();
Android中通過ListView的實現簡單新聞列表
Android中實現簡單的新聞列表 “本文主要針對Android新手,大神請繞道…” 使用到的第三方庫 Retrofit2+RxJava2 進行網路請和json資料的解析,註解框架:Butterknife 8.5.1 如果以上的框架還有同學不知道怎麼使用可以看看