編輯: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);
Android JSON解析器
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
Android本地化
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
Android登錄實例
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
Android加載Spinner
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用