編輯:Android開發實例
本文主要講ListView排序問題,關於布局,請參考ListView之動態修改。
單字段排序:
private ArrayList<Map<String, Object>> mArrayList; private void getData() { //add Data..... //對ListView中數據list排序 if (!mArrayList.isEmpty()){ Collections.sort(mArrayList, new Comparator<Map<String, Object>>() { @Override public int compare(Map<String, Object> object1, Map<String, Object> object2) { //根據字段"LEVEL"排序 return object1.get("LEVEL").toString() .compareTo(object2.get("LEVEL").toString()); } }); } }
效果圖如下(LEVEL字段為圖片樣式):
如上圖如果這樣排你肯定不滿意。因為文本沒有排序。
多字段排序:
if (!mArrayList.isEmpty()) { Collections.sort(mArrayList, new Comparator<Map<String, Object>>() { @Override public int compare(Map<String, Object> object1, Map<String, Object> object2) { //我把obejct1 和obejct2寫倒了,這樣寫的用處就是反向排序。 int i = object2.get("LEVEL").toString()</pre> .compareTo(object1.get("LEVEL").toString()); if (i == 0) { //如果"LEVEL"字段相同,再根據下一字段排序 object1.get("TITLE").toString() .compareTo(object2.get("TITLE").toString()); } return i; } }); }
前後效果圖如下:
值得一提的是右邊圖片的樣式:
<!-- wifi_singal_open.xml --> <level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" /> <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" /> <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" /> <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" /> </level-list>
上面drawable是4種不帶鎖的圖片。
在wifi_singal.xml中引用wifi_signal_open和wifi_signal_lock文件:<!-- wifi_singal.xml --> <selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res/com.zkx.demo"> <item settings:state_encrypted="true" android:drawable="@drawable/wifi_signal_lock" /> <item settings:state_encrypted="false" android:drawable="@drawable/wifi_signal_open" /> </selector>settings:state_encrypted="true"為自定義屬性,在attr.xml中有配置:
<resources> <declare-styleable name="WifiEncryptionState"> <attr name="state_encrypted" format="boolean" /> </declare-styleable> </resources>最後在Adapter getView中配置圖片文件:
public static final int[] STATE_SECURED = {R.attr.state_encrypted}; public static final int[] STATE_NONE = {}; ImageView img = (ImageView)v.findViewById(R.id.img); img.setImageResource(R.drawable.wifi_signal); img.setImageLevel(Integer.valueOf(map.get("LEVEL").toString())); //可見或不可見 int[] state = Boolean.valueOf(map.get("STATE").toString()) ? STATE_SECURED : STATE_NONE; img.setImageState(state, true);
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用