2014-09-29 76 views
1

我希望通過名爲score的變量對我的listView進行排序。任何人都知道如何做到這一點?目前這裏是我的代碼,它從數據庫中獲取信息並將其顯示在列表視圖中。Sorting Listview Java

List<String> queryTable(){ 
    List<String> player = new ArrayList<String>(); 

    SQLiteDatabase db = myOpenHelper.getReadableDatabase(); 
    Cursor cursor = db.query(CustomOpenHelper.TABLE_NAME, null, null, null, null, null, null); 

    while (cursor.moveToNext()) { 
     int id = cursor.getInt(cursor.getColumnIndex("_id")); 
     String name = cursor.getString(cursor.getColumnIndex("name")); 
     int score = cursor.getInt(cursor.getColumnIndex("score")); 
     player.add(id + " --> the player " + name + " has got a score of " + score +"s"); 
    } 

那麼我該如何去排序這個listview的變量「分數」?多謝你們。

+0

嘗試使用可比 – 2014-09-29 06:38:13

+0

從數據庫中獲得的信息已經被排序。這個'ORDERY BY columnname'有sql關鍵字您可以添加'ASC'或'DESC'來升序或降序 – user28470 2014-09-29 06:40:23

回答

1

query函數的最後一個參數用於排序。只需將空值替換爲

column_name + " DESC". 
+0

對不起,它似乎不工作,它只是當我執行此操作時崩潰。 – user3584935 2014-09-29 09:11:20

0

列表具有元素的排序功能。這是示例代碼:

List<Fruit> fruits= new ArrayList<Fruit>(); 
Fruit fruit; 
for(int i=0;i<100;i++) 
{ 
    fruit = new fruit(); 
    fruit.setname(...); 
    fruits.add(fruit); 
} 
//Sorting 
Collections.sort(fruits, new Comparator<Fruit>() { 
    @Override 
    public int compare(Fruit fruite1, Fruit fruite2) 
    { 

     return fruite1.fruitName.compareTo(fruite2.fruitName); 
    } 
}); 

此代碼根據furitName屬性對列表進行排序。當我們看你的代碼時,你可以做同樣的事情。首先,你必須使用一個代表id,名字和分數的類。使用這個類,你可以使用List添加和排序元素。

0

只需將記錄存儲在列表中,然後應用排序(取決於稱爲分數的變量),然後通過此更新和排序列表通知列表。

0

調用此方法:

Collections.sort(score_list,myComparator);

這裏是你的比較:

比較myComparator =新的比較(){

@Override 
    public int compare(Integer lhs, Integer rhs) { 
     int i1 = lhs; 
     int i2 = rhs; 
     return (i1 -i2); 
    } 
};